TCP多主機聊天程式

2021-08-28 09:09:16 字數 4294 閱讀 2840

多程序實現

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服務程式簡單的來說,就是當系統啟動時,該程式和系統一起啟動.這樣的乙個描述不很準確,但我只...