網路程式設計 1 TCP客戶端服務端的程式設計模型

2021-08-21 15:42:41 字數 2158 閱讀 2663

客戶端呼叫虛列

呼叫socket函式建立套接字

呼叫connect鏈結直服務端

呼叫i/o函式(write/read)與伺服器進行通訊

呼叫close關閉套接字

//步驟一:建立socket

int sockfd=socket(af_inet,sock_stream,0);

if(sockfd<0)

struct sockaddr_in serveraddr;

memset(&serveraddr,0,sizeof(serveraddr));

serveraddr.sin_family=af_inet;

serveraddr.sin_port=htons(atoi(argv[2]));

//將ip位址轉換成網路位元組序 填入到serveraddr中

inet_pton(af_inet,argv[1],&serveraddr.sin_addr.s_addr);

if(connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)

//步驟三 呼叫i/o函式

//和伺服器斷進行雙向 通訊;

char buffer[1024];

memset(buffer,0,sizeof(buffer));

size_t size;

if((size=read(sockfd,buffer,sizeof(buffer)))<0)

if(write(stdout_fileno,buffer,size)!=size)

//步驟四 關閉套接字

close(sockfd);

伺服器端的呼叫序列

呼叫socket函式來建立套接字

呼叫bind函式繫結本地的位址和埠(family\port\ip);

呼叫listen()函式啟動監聽

呼叫accept函式從已經連線到佇列中 提取客戶連線

呼叫i/o函式與客戶端進行通訊

呼叫close關閉套接字

//步驟一:建立socket

//建立在核心中;是乙個結構體;

//af_inet:ipv4

//sock_stream :tcp 協議;

sockfd=socket(af_inet,sock_stream,0);

struct sockaddr_in serveraddr;

memset(&serveraddr,0,sizeof(serveraddr) );

//往位址中填入ip port internet位址足型別等

serveraddr.sin_family=af_inet;//ipv4;

serveraddr.sin_port=htons(atoi(argv[1]));//port

serveraddr.sin_addr.s_addr=inaddr_any;//"192.168.0.1";//監聽所有的網絡卡上面的客戶端的鏈結請求;

if(bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)

//步驟三

//呼叫listen 函式啟動監聽 制定port監聽;

//通知系統去接受來自客戶端的鏈結請求;

//及其昂接受到的客戶端請求放置到對應的佇列中

//第二個引數: 指定佇列的長度;

if(listen(sockfd,10)<0)

//步驟四:

//呼叫 accept函式從佇列之中獲得乙個客戶端的請求鏈結

//並且返回乙個新的socket 描述符;針對客戶端的;

//如果沒有客戶端鏈結,呼叫這個函式會阻塞,直到獲得乙個客戶端的鏈結;

struct sockaddr_in clientaddr;

socklen_t clientaddr_len=sizeof(clientaddr);

while(1)

//步驟五:利用i/o函式(write/read)

//和鏈結的客戶端進行雙向的通訊;

out_addr(&clientaddr);

do_service(fd);

//步驟6 關閉socket;

close(fd);

}

TCP服務端和客戶端(1)

在陳述這個小例項之前,首先將mafile寫出來 makefile all client server all規則,他依賴於client和server規則 client tcp process.o tcp client.o client規則生成客戶端程式 gcc o client tcp proces...

網路程式設計之TCP客戶端開發和TCP服務端開發

建立客戶端套接字物件 和服務端套接字建立連線 傳送資料 接收資料 關閉客戶端套接字 import socket if name main 建立tcp客戶端套接字 1.af inet 表示ipv4 2.sock stream tcp傳輸協議 tcp client socket socket.socke...

TCP客戶端服務端demo

服務端程式 include include include include include include include int main 列印握手成功的客戶端 struct sockaddr in servaddr socklen t nservlen sizeof servaddr getso...