多程序實現
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9
10 void serverio(int fd)
11 21 else if(s == 0)
22
26 else
27
32 }
33 }
34 35 int main(int argc, char* argv)
36 37
43 44 int listen_sock = socket(af_inet, sock_stream, 0);
45 if(listen_sock < 0)
46
50 51 struct sockaddr_in server;
52 server.sin_addr.s_addr = inet_addr(argv[1]);
53 server.sin_port = htons(atoi(argv[2]));
54 server.sin_family = af_inet;
55 if(bind(listen_sock, (struct sockaddr*)&server, sizeof(server)) == -1)
56
60 61 //開始監聽
62 if(listen(listen_sock, 5) < 0)
63
67 68 printf("listen successfully!!\n");
69 70 while(1)
71
80 printf("accept successfully , message from [%s][%d]!!\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
81 //為了實現可以有多個客戶端訪問的同時,伺服器能對其都提供服務,因此採用多程序版本
82 pid_t pid = fork();
83 if(pid == 0)
91 //在子程序中再建立乙個孫子程序,再使子程序退出,而祖父程序不需要等待孫子程序,所以這樣就能解決程序等待的問題
92 93 serverio(new_sock);
94 exit(0);
95 }
96 else
97
101 serverio(new_sock);
102 }
103
104 return 0;
105 }
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8
9 int main(int argc, char* argv)
10 16
17 int sock = socket(af_inet, sock_stream, 0);
18 if(sock < 0)
19
23 24 struct sockaddr_in server;
25 server.sin_family = af_inet;
26 server.sin_port = htons(atoi(argv[2]));
27 server.sin_addr.s_addr = inet_addr(argv[1]);
28 29 if(connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0)
33 34 printf("connect success...!!!\n");
35 36 char buf[1024];
37 while(1)
42 43 return 0;
44 }
多執行緒實現
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9
10 11
12 void serverio(int fd)
13 23 else if(s == 0)
24
28 else
29
33 }
34 }
35 36 void* service(void* arg)
37 40
41 int main(int argc, char* argv)
42 43
49 50 int listen_sock = socket(af_inet, sock_stream, 0);
51 if(listen_sock < 0)
52
56 57 struct sockaddr_in server;
58 server.sin_addr.s_addr = inet_addr(argv[1]);
59 server.sin_port = htons(atoi(argv[2]));
60 server.sin_family = af_inet;
61 if(bind(listen_sock, (struct sockaddr*)&server, sizeof(server)) == -1)
62
66 67 //開始監聽
68 if(listen(listen_sock, 5) < 0)
69
73 74 printf("listen successfully!!\n");
75 76 while(1)
77
86 pthread_t id;
87 printf("accept successfully , message from [%s][%d]!!\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
88 //多執行緒版本的server伺服器
89 pthread_create(&id, null, service, (void*)new_sock);
90 pthread_detach(&id);
91 }
92 93 return 0;
94 }
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8
9 int main(int argc, char* argv)
10 16
17 int sock = socket(af_inet, sock_stream, 0);
18 if(sock < 0)
19
23 24 struct sockaddr_in server;
25 server.sin_family = af_inet;
26 server.sin_port = htons(atoi(argv[2]));
27 server.sin_addr.s_addr = inet_addr(argv[1]);
28 29 if(connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0)
33 34 printf("connect success...!!!\n");
35 36 char buf[1024];
37 while(1)
42 43 return 0;
44 }
Delphi簡單TCP聊天程式
首先上截圖 最近有點無聊,於是將以前寫到一半的聊天程式拿出來改進了一下。delphi自帶兩個控制項 tidtcpserver,tidtcpclient。顧名思義,乙個是伺服器端用的,另乙個是客戶端用的。程式主要思路如下,客戶端程式開始執行時與伺服器端建立連線,使用者登入時向伺服器端傳送login命令...
基於TCP的網路聊天程式
本例項是基於tcp的網路聊天程式,根據有關tcp的套接字socket程式設計中伺服器的設計過程,編寫的 新建工程 新建檔案 新建項 include include 引入winsock標頭檔案 int main 判斷請求載入的版本號是否符合要求 if lobyte wsadata.wversion 2...
TCP聊天程式的使用說明
首先我這是乙個c s結構的系統,所以分伺服器和客戶端兩個程式.伺服器端的程式是乙個windows服務程式,我想大家在學習這個系統之前要先學一下windows服務程式是什麼.在這裡,我大概介紹一下,windows服務程式簡單的來說,就是當系統啟動時,該程式和系統一起啟動.這樣的乙個描述不很準確,但我只...