在linux下寫了個小的 socket程式,分為客戶端和伺服器端,服務端開乙個埠(2000),做為乙個daemon,等待客戶的連線請求.一旦有客戶連線,伺服器端列印出客 戶端的ip位址和埠,並且向伺服器端傳送歡迎資訊和時間.下面是服務端的**(tcpserver.c).由於這只是個簡單的程式,所以只用了單執行緒實 現!
/**
* tcp server program, it is a ****** example only.
* zhengsh 200520602061 2
* when client connect to server, send a welcome message and timestamp in server.
*/
#include
#include
#include
#include
#include
#include
#include
#define server_port 20000 // define the defualt connect port id
#define length_of_listen_queue 10 //length of listen queue in server
#define buffer_size 255
#define welcome_message "welcome to connect the server. "
int main(int argc, char **argv)
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(server_port);
servaddr.sin_addr.s_addr = htons(inaddr_any);
if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
if (listen(servfd,length_of_listen_queue) < 0)
while (1)
strcpy(buf,welcome_message);
//inet_ntop(inet_addrstrlen,cliaddr.sin_addr,buf,buffer_size);
printf("from client,ip:%s,port:%d/n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp = time(null);
strcat(buf,"timestamp in server:");
strcat(buf,ctime(×tamp));
send(clifd,buf,buffer_size,0);
close(clifd);
}//exit
close(servfd);
return 0;
}
客戶每次用乙個隨機的埠連線伺服器,並接收來自伺服器的歡迎資訊
,然後列印出來(tcpclient).執行的時候接受乙個引數,也就是伺服器的ip位址.
/* tcp client program, it is a ****** example only.
* zhengsh 200520602061 2
* connect to server, and echo a message from server.
*/
#include
#include
#include
#include
#include
#include
#define server_port 20000 // define the defualt connect port id
#define client_port ((20001+rand())%65536) // define the defualt client port as a random port
#define buffer_size 255
#define reuqest_message "welcome to connect the server./n"
void usage(char *name)
int main(int argc, char **argv)
if ((clifd = socket(af_inet,sock_stream,0)) < 0)
srand(time(null));//initialize random generator
bzero(&cliaddr,sizeof(cliaddr));
cliaddr.sin_family = af_inet;
cliaddr.sin_port = htons(client_port);
cliaddr.sin_addr.s_addr = htons(inaddr_any);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = af_inet;
inet_aton(argv[1],&servaddr.sin_addr);
servaddr.sin_port = htons(server_port);
//servaddr.sin_addr.s_addr = htons(inaddr_any);
if (bind(clifd,(struct sockaddr*)&cliaddr,sizeof(cliaddr))<0)
if (connect(clifd,(struct sockaddr*)&servaddr, socklen) < 0)
length = recv(clifd,buf,buffer_size,0);
if (length < 0)
printf("from server %s :/n/t%s ",argv[1],buf);
close(clifd);
return 0;
} 程式在fedora core 4下通過編譯,有幾個warining.但是不影響.
網路程式設計 Socket程式設計
一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...
socket網路程式設計
首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...
Socket網路程式設計
socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...