c語言tcp程式設計,linux系統實現
下面是tcp通訊的demo:
##伺服器端
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
6465
6667
6869
7071
7273
7475
7677
7879
8081
8283
8485
8687
8889
9091
9293
9495
9697
9899
100101
102103
104105
/*socket tcp伺服器端*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define server_port 5555
/* 監聽後,一直處於accept阻塞狀態,
直到有客戶端連線,
當客戶端如數quit後,斷開與客戶端的連線
*/
int main()
bzero(&server_addr, sizeof(server_addr));
//初始化伺服器端的套接字,並用htons和htonl將埠和位址轉成網路位元組序
server_addr.sin_family = af_inet;
server_addr.sin_port = htons(server_port);
//ip可是是本伺服器的ip,也可以用巨集inaddr_any代替,代表0.0.0.0,表明所有位址
server_addr.sin_addr.s_addr = htonl(inaddr_any);
//對於bind,accept之類的函式,裡面套接字引數都是需要強制轉換成(struct sockaddr *)
//bind三個引數:伺服器端的套接字的檔案描述符,
if(bind(serversocket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
//設定伺服器上的socket為監聽狀態
if(listen(serversocket, 5) < 0)
while(1)
printf("\nrecv client data...n");
//inet_ntoa ip位址轉換函式,將網路位元組序ip轉換為點分十進位制ip
//表示式:char *inet_ntoa (struct in_addr);
printf("ip is %s\n", inet_ntoa(clientaddr.sin_addr));
printf("port is %d\n", htons(clientaddr.sin_port));
while(1)
buffer[idatanum] = '\0';
if(strcmp(buffer, "quit") == 0)
break;
printf("%drecv data is %s\n", idatanum, buffer);
send(client, buffer, idatanum, 0);
} }
return 0;
}
##客戶端
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
6465
66
/*socket tcp客戶端*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define server_port 5555
/* 連線到伺服器後,會不停迴圈,等待輸入,
輸入quit後,斷開與伺服器的連線
*/
int main()
serveraddr.sin_family = af_inet;
serveraddr.sin_port = htons(server_port);
//指定伺服器端的ip,本地測試:127.0.0.1
//inet_addr()函式,將點分十進位制ip轉換成網路位元組序ip
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(connect(clientsocket, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
printf("connect with destination host...\n");
while(1)
close(clientsocket);
return 0;
}
go語言網路程式設計 TCP程式設計
一.tcp socket程式設計 go的tcp服務端流程分為三步 1 監聽埠 2 接收客戶端請求連線,返回conn 3 建立goroutine處理請求 乙個例項如下 tcp服務端 package main import fmt net bufio func process conn net.conn...
GO語言TCP程式設計正規化
一直用go編寫tcp http websocket伺服器,得空總結一些簡單的正規化,供參考。在github上都可以看到。之前用c 寫tcp server,一般兩種模式 1個listener執行緒 n個processor執行緒 通過reuseport機制,n個listener執行緒,tcp包的處理可以...
C 非同步TCP程式設計
一 基本知識 1 利用tcplistener類和tcpclient類在同步方式下接收 傳送資料以及監聽客戶端連線時,在操作沒有完成之前一直處於阻塞狀態。2 非同步設計模式 非同步操作一般工作在乙個單獨的執行緒中執行,呼叫非同步方法非同步執行某個操作時,可以同時繼續執行該非同步方法的後面的 非同步程式...