實現tcp連線的server端的listener

2021-05-22 22:32:47 字數 1034 閱讀 5120

要監聽tcp連線中的某埠,大致可以分為以下幾個步驟:socket,bind,listen。

int socket(int domain, int type, int protocol);

domain的有以下幾種:

type有以下幾種:sock_stream,sock_dgram, sock_seqpacket,sock_raw,sock_rdm,sock_packet,sock_nonblock,sock_cloexec。

protocol:一般填0,表示ip協議。

int bind(int sockfd, const struct sockaddr *serveraddr, socklen_t addrlen);

sockfd就是socket返回的控制代碼了。

serveraddr是乙個struct sockaddr *型別。

serveraddr.sin_family = af_inet; //與soket的domain一樣

serveraddr.sin_addr.s_addr = inet_addr(strip); //將字串ip位址,轉化成十進位制ip位址

if(inaddr_none == serveraddr.sin_addr.s_addr)

serveraddr.sin_port = htons(atoi(strport));//atoi是把str轉化成int

int listen(int sockfd, int backlog);

這裡的backlog是指可以接受的sockfd個數,如果連線個數大於backlog,三次握手將不成功,即:

client:syn

server:syn + ack

client:ack

server:syn + ack

client:ack

server:syn + ack

client:ack

server:syn + ack

client:ack

感覺server端由於listen佇列滿了,丟掉client的最後乙個ack包,所以,就無法建立三次握手了 。

簡單的TCP連線Server和Client

我們的一款unity開發的遊戲,之前一直在android上測試,這幾天我做了遊戲的windows phone 8版本匯出工作,經過一周摸索,終於成功打出了可以在wp8手機上正常執行的版本。wp8的.net庫是silverlight的乙個子集,很多.net 2.0的語法它不支援,socket的很多屬性...

TCP連線實現 客戶端 服務端 通訊

客戶端 client.c include include include include include include include include define max buf 512 int main int argc,char argv 設定伺服器位址結構體 bzero server ad...

VC實現UDP傳輸server端

include pragma comment lib,wsock32.lib server 初始化環境 wsadata wd int nstart wsastartup makeword sock ver,0 wd if 0 nstart if 2 lobyte wd.wversion 建立sock...