c語言tcp程式設計

2021-09-17 21:46:23 字數 3391 閱讀 3198

c語言tcp程式設計,linux系統實現

下面是tcp通訊的demo:

##伺服器端

123

4567

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;

}

##客戶端

123

4567

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 非同步設計模式 非同步操作一般工作在乙個單獨的執行緒中執行,呼叫非同步方法非同步執行某個操作時,可以同時繼續執行該非同步方法的後面的 非同步程式...