int tcp_server(void)
{
int sockfd;
int new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buffer[128];
int nByte;
int sin_size;
//1.創建套接字
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("create socket error!\n");
exit(1);
}
//2.1設置要綁定的地址
bzero((char *)&server_addr, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portnum); //字節序(大小端)
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//2.綁定地址
bind(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr));
//3.監聽端口
listen(sockfd,5);
while(1)
{
//4.等待連接
sin_size = sizeof(struct sockaddr_in);
new_fd = accept(sockfd,(struct sockaddr*)(&client_addr),&sin_size);//注意:第3個參數爲socklen_t*(整形的指針)
printf("server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); //將整數型的IP地址轉化爲字符型(192.168.1.1)
//5.接收數據
nByte = recv(new_fd, buffer, 128, 0);
buffer[nByte] = '\0';
printf("server reciivd : %s\n", buffer);
//6.結束連接
close(new_fd);
}
close(sockfd);
return 0;
}
int tcp_client(void)
{
struct sockaddr_in server_addr;
char buffer[128];
//1.創建套接字
int sockfd;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("create socket error!\n");
exit(1);
}
//2.1設置要連接的服務器的地址
bzero((char *)&server_addr, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portnum);
server_addr.sin_addr.s_addr = inet_addr("192.168.10.50");
//2.連接服務器
if(connect(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr)) == -1)
{
printf("connect error\n");
exit(1);
}
//3.發送數據到服務器
printf("please input char:\n");
fgets(buffer,128,stdin);
send(sockfd, buffer, strlen(buffer), 0);
//4.關閉連接
close(sockfd);
return 0;
}
網絡編程tcp協議源代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.