Linux 中TCP server的實現

2021-08-03 15:22:10 字數 1706 閱讀 4495

tcp 網路客戶端偵聽連線。

可使用 tcpclient 或 socket 來連線 tcplistener。可使用 ipendpoint、本地 ip 位址及埠號或者僅使用埠號,來建立 tcplistener。可以將本地 ip 位址指定為 any,將本地埠號指定為 0(如果希望基礎服務提供程式為您分配這些值)。如果您選擇這樣做,可在連線套接字後使用 localendpoint 屬性來標識已指定的資訊。

start 方法用來開始偵聽傳入的連線請求。start 將對傳入連線進行排隊,直至您呼叫 stop 方法或它已經完成 maxconnections 排隊為止。可使用 acceptsocket 或 accepttcpclient 從傳入連線請求佇列提取連線。這兩種方法將阻止。如果要避免阻止,可首先使用 pending 方法來確定佇列中是否有可用的連線請求。

tcpclient:

tcpclient 為 tcp 網路服務提供客戶端連線。

tcpclient 類提供了一些簡單的方法,用於在同步阻塞模式下通過網路來連線、傳送和接收流資料。

為使 tcpclient 連線並交換資料,使用 tcp protocoltype 建立的 tcplistener 或 socket 必須偵聽是否有傳入的連線請求。可以使用下面兩種方法之一連線到該偵聽器:

建立乙個 tcpclient,並呼叫三個可用的 connect 方法之一。

使用遠端主機的主機名和埠號建立 tcpclient。此建構函式將自動嘗試乙個連線。

注意   如果要在同步阻塞模式下傳送無連線資料報,請使用 udpclient 類。

對繼承者的說明:  要傳送和接收資料,請使用 getstream 方法來獲取乙個 networkstream。呼叫 networkstream 的 write 和 read 方法與遠端主機之間傳送和接收資料。使用 close 方法釋放與 tcpclient 關聯的所有資源。

**實現:

#include#include#include#include#include#include#includevoid usage(char *name)

int startup(const char* _ip,int _port)

struct sockaddr_in local;

local.sin_family = af_inet;

local.sin_port= htons(_port);

local.sin_addr.s_addr = inet_addr(_ip);

if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)

return sock;

}int main(int argc,char* argv)

int listen_sock=startup(argv[1],atoi(argv[2]));

while(1)

inet_ntop(af_inet,&client.sin_addr,cli_ip,inet_addrstrlen);

printf("get new client:ip->%s,port->%d\n",cli_ip,ntohs(ntohs(client.sin_port)));

char buf[1024];

while(1)

else if(s==0)

else

}close(new_sock);

} return 0;

}

TCP server程式設計

一 基本解釋 在之前的部落格中我已經簡單的介紹過tcp建立連線時的三次握手,以及在斷開連線時的四次揮手,在此我就不再多說了,此次介紹基於tcp的套接字程式設計。在此類程式設計中會用到一些結構體以及函式,下來我簡單地介紹下這些 1.struct sockaddr in 其結構如下 sockaddr i...

Linux下 C語言編寫 TCP Server

用c寫的,做了函式的封裝,記錄在此,方便查詢 server.h ifndef server h define server h define false 1 define true 0 int server init char server port 伺服器初始化 int wait accept i...

QT Socket程式設計 TCP Server

1 在 pro檔案中新增 qt network 2 在 中新增 qtcpserver m ptcpserver server tcp socket qtcpsocket m pconnectsocket client connect socket 初始化socket m ptcpserver new...