套接字程式設計 TCP例項

2021-09-29 15:22:28 字數 1916 閱讀 3809

目錄

一、概述

這裡的例項主要參考《unix網路程式設計卷1:套接字聯網api》,這裡記錄一下。主要是通過這裡的記錄,一直去把裡面的東西都coding和理解一遍。

二、例項

服務端:

#include #include #include #include #include #include #include #include #include #include #define maxline 256

#define port 7777

#define listenq 10

void sys_err(char* msg)

int writen(int fd,const void *vptr,int n) else

}nleft -= nwrite;

ptr += nwrite;

}return n;

}int main(int argc,char* ar**)

*/listfd=socket(af_inet,sock_stream,0);

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

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(port);

/*if (inet_pton(af_inet,ar**[1],&servaddr.sin_addr)<=0)

*/servaddr.sin_addr.s_addr = inaddr_any;

if (bind(listfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) < 0)

listen(listfd,listenq);

printf("enter listen...\n");

while (1)

ticks=time(null);

snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));

if (writen(connfd,buff,strlen(buff)) < 0)

close(connfd);

}return 0;

}

客戶端:

#include #include #include #include #include #include #include #include #include #define maxline 256

#define port 7777

void sys_err(char *msg)

int main(int argc , char **ar**)

sockfd=socket(af_inet,sock_stream,0);

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

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(port);

if (inet_pton(af_inet,ar**[1],&servaddr.sin_addr) <= 0)

connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

while((n=read(sockfd,recvline,maxline)) >0 )

}if(n <0)

return 0;

}

測試:

服務端:./daytimesrv

客戶端:

./daytimecli 127.0.0.1

三、總結

TCP套接字程式設計

網路程式設計又稱為套接字程式設計,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而程式設計中的 套接字 就是用來連線該網路的工具。它本身具有連線的含義,還可以表示為兩台計算機之間的網路連線。4.呼叫accept函式受理連線請求 基於tcp的服務端 客戶端 tcp伺服器端預設函式呼叫順序 sock...

TCP套接字程式設計

對於socket不理解的可以檢視 c語言通過socket程式設計實現tcp通訊,linux socket程式設計 socket詳解 先看看程式效果圖 提示如果伺服器,直接通過ctrl z關閉,這樣程式占用的位址不會釋放,需要以下操作 1.ps 檢視程序 2.kill 9 程式pid 強制殺死程序 服...

TCP套接字程式設計!!!

一 socket程式設計的基本函式詳解,其中根據客戶端還是服務端,或者根據使用tcp還是udp,函式的呼叫流程有些許區別 1 socket 函式用於建立乙個套接字,一條通訊線路的端點。3 listen 在服務端程式成功建立套接字和與位址進行繫結之後,還需要準備在該套接字上接收新的連線請求。此時呼叫l...