Archive

Posts Tagged ‘programming’

UDP Broadcast sunucu – istemci

August 3rd, 2012 No comments

Sunucu:

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MY_PORT 3333
int main(int argc, char *argv[])
{
int sockfd, new_fd;
struct sockaddr_in my_addr; // hedef adres
struct sockaddr_in their_addr; // baglanti yapan adres
int sin_size, rt;
// gelen verinin tutuldugu buffer
char buf[32];
// islem yapmak icin gerekli dosya gosterici
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
sin_size = sizeof(struct sockaddr_in);
// adres ile ilgili ayarlar
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MY_PORT); // kullanilacak port
my_addr.sin_addr.s_addr = INADDR_ANY; // mevcut ip adresi
memset(&(my_addr.sin_zero), 0, 8); // geri kalani 0la
// socket ile dosyayi iliskilendir
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));
while ( 1 ) {
rt = recvfrom (sockfd, buf, 12, 0, (struct sockaddr *)&their_addr, &sin_size);
if (rt > 0) {
printf ("recv: %s\n", buf);
} else if (rt < 0) {
printf("Baglanti koptu\n");
break;
}
}
close(sockfd);
return 0;
}

İstemci:

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define DEST_IP "255.255.255.255"
#define DEST_PORT 3333
int main(int argc, char *argv[])
{
int sockfd, new_fd;
struct sockaddr_in dest_addr; // hedef adres
int sin_size, rt;
sin_size = sizeof(struct sockaddr_in);
// islem yapmak icin gerekli dosya gosterici
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
// adres ile ilgili ayarlar
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(DEST_PORT);
dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);
memset(&(dest_addr.sin_zero), 0, 8); // geri kalani 0 la
// Broadcast icin gerekli yetkiyi al
int flag = 1;
if (setsockopt (sockfd, SOL_SOCKET, SO_BROADCAST, &flag, sizeof(flag)) < 0)
perror("setsockopt");
// mesaji gonder
rt = sendto (sockfd, "slm asl plz", 12, 0, (const struct sockaddr *)&dest_addr, sin_size);
if ( rt < 0 )
perror("Hata: ");
// socketi kapat
close(sockfd);
return 0;
}

Var olan bir SVN deposunun adresini değiştirme

April 9th, 2012 No comments

Herhangi bir nedenle üzerinde çalıştığınız svn deposunun adresi değişirse aşağıdaki komutla gerekli değişikliği yapabilirsiniz.

svn switch --relocate http://svn.example.com/path/to/repository/path/within/repository http://svnnew.example.com/new/repository/path/within/repository

Linux, Paralel Port ile 2×16 LCD Ekran Kullanımı

February 27th, 2011 No comments

Çalıştığım projede linuxta paralel port ile lcd ekran kullanmam gerekti. Neredeyse internetin altını üstüne getirdim ama işime yarar çok birşey bulamadım. Sonunda DOS için yazılmış bir kod buldum. Bu kodu biraz inceleyip, gerekli püf noktaları bulunca kodu linux’a uydurmak çok zor olmadı. Hatta neredeyse sadece kullanılan fonksiyonun adını ve parametre yerlerini değiştirdim 🙂

Aslında olay çok basitmiş, lcd ekrandan çıkan 14 bacaktan, 8tanesini data ve komut göndermek için kullanıyoruz. 1 bacak enable, 1 set – reset seçimi için, 1 bacakta read/write seçimi için kullanılıyor. Geri kalan 3 bacak güç bağlantısı ve kontrast için kullanılıyor. Burdaki şemaya göre bağlantıları yapabilirsiniz. Ayrıca örnek aldığım kodda aynı sayfada bulunmakta.

Yorum satırları pek çok şeyi açıklıyor. Ama birkaç noktaya değinmekte fayda var. Data bacaklarına gerekli inputları verdikten sonra, enable bacağını 1’den 0’a düşürerek lcd’nin data bacaklarında sinyali alıp işleme sokmasını sağlıyoruz. init array’i içinde lcd’nin temizlenmesi ve çalışmaya uygun hale gelmesi için gerekli komutlar tutuluyor. 0x378 paralel portun adresi.

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/io.h>
#define PORTADDRESS 0x378 /* Enter Your Port Address Here */
#define DATA PORTADDRESS+0
#define STATUS PORTADDRESS+1
#define CONTROL PORTADDRESS+2
int main()
{
if (ioperm(DATA , 3, 1)) {perror("ioperm"); exit(1);}
char string[] = {"Testing 1,2,3 "
"It' Works ! "};
char init[10];
int count;
int len;
init[0] = 0x0F; /* Init Display */
init[1] = 0x01; /* Clear Display */
init[2] = 0x38; /* Dual Line / 8 Bits */
outb(inb(CONTROL) & 0xDF, CONTROL); /* Reset Control Port - Make sure Forward Direction */
outb(inb(CONTROL) | 0x08, CONTROL); /* Set Select Printer (Register Select) */
for (count = 0; count < = 2; count++)
{
outb(init[count], DATA);
outb(inb(CONTROL) | 0x01, CONTROL); /* Set Strobe (Enable)*/
usleep(20); /* Larger Delay for INIT */
outb(inb(CONTROL) & 0xFE, CONTROL); /* Reset Strobe (Enable)*/
usleep(20); /* Larger Delay for INIT */
}
outb(inb(CONTROL) & 0xF7, CONTROL); /* Reset Select Printer (Register Select) */
len = strlen(string);
for (count = 0; count < len; count++)
{
outb(string[count], DATA);
outb(inb(CONTROL) | 0x01, CONTROL); /* Set Strobe */
usleep(2);
outb(inb(CONTROL) & 0xFE, CONTROL); /* Reset Strobe */
usleep(2);
}
return 0;
}
view raw lcd.c hosted with ❤ by GitHub

Linke birşey olması durumunda bu adresten gerekli şemayı indirebilirsiniz.

Java ile Oracle Veritabanına bağlanmak.

November 8th, 2010 No comments

Öncelikle http://www.oracle.com/technetwork/database/enterprise-edition/jdbc101040-094982.html adresinden classes12.jar dosyasını indiriyoruz.

Bu dosyayı bir dizine atıp, içeriğini bu dizine çıkartıyoruz. Bu dizini classpath değişkeninde belirtip kodlamaya başlıyoruz.

import java.io.*;
import java.sql.*;

public class OraThin {                                                                                                                                                                
    public static void main(String[] args) {                                                                                                                                          
        try {                                                                                                                                                                         
            Connection con = null;
            Class.forName("oracle.jdbc.driver.OracleDriver");              
            con=DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:dbname",
                "username",
                "password");
            Statement s = con.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM KISI");

            String name;
            String surname;

            while(rs.next()) {
                name    = rs.getString("AD");
                surname = rs.getString("SOYAD");

                System.out.println("Name: " + name + ", Surmame: " + surname);
            }

            s.close();
            con.close();
        } catch(Exception e){e.printStackTrace();}
    }
} 
Categories: Programlama Tags: , , ,