客户端发送的消息,服务端接收并在终端中显示出来
服务端代码(server.c):
#include <stdio.h> #include <sys/socket.h> #include<netinet/in.h> #include
<errno.h> #include <unistd.h> #include <strings.h> int main(void) {
//1.建立TCP套接字sockfd int sockfd = socket(AF_INET,SOCK_STREAM,0);
//2.绑定套接字sockfd与IP地址和端口号 struct sockaddr_in addr;//本机地址结构体 socklen_t len =
sizeof(addr); bzero(&addr,len); addr.sin_family = AF_INET;//协议簇
addr.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机IP addr.sin_port =
htons(50021);//端口号 bind(sockfd,(struct sockaddr *)&addr,len);
//3.设置套接字socket进入监听状态 listen(sockfd,3); //4.等待远程客户端连接请求
//5.收到请求后,得到一个专用于收发数据的连接套接字connfd int connfd = accept(sockfd,NULL,NULL);
//6.使用连接套接字与客户端通信 char buf[100]; while(1) { bzero(buf,100);
read(connfd,buf,100);//读取客服端发来的信息 printf("receive from client massage:%s",buf);
} close(connfd); close(sockfd); return 0; }
客户端代码client.c
#include <stdio.h> #include <sys/socket.h> #include<netinet/in.h> #include
<errno.h> #include <unistd.h> #include <string.h> int main(void) {
//1.建立TCP套接字sockfd int sockfd = socket(AF_INET,SOCK_STREAM,0);
//2.绑定套接字sockfd与IP地址和端口号 struct sockaddr_in addr;//本机地址结构体 socklen_t len =
sizeof(addr); bzero(&addr,len); addr.sin_family = AF_INET;//协议簇
addr.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机IP addr.sin_port =
htons(50021);//端口号 //3.对服务端发起连接请求 if(connect(sockfd,(struct sockaddr
*)&addr,sizeof(addr))==0) { printf("connection sucessful\n"); } //4.与服务端进行通信
char sendbuf[100]; while(1) { bzero(sendbuf,100);
fgets(sendbuf,100,stdin);//从键盘获取字符,到sendbuf
write(sockfd,sendbuf,strlen(sendbuf));//发送sendbuf } close(sockfd); return 0; }
效果图: