利用sockets实现服务器客户端简单通信
2017-03-27 20:38
639 查看
这一篇通篇代码实现的是一对一的你一句我一句的通信,客户端和服务器可以是两台不同的主机。
//utili.h //头文件中可以更改端口号,主机名 #include<stdio.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include<string.h> #include<stdlib.h> #include<arpa/inet.h> #define PORT 9090 #define IP_ADDRESS "127.0.0.1" #define LISTEN_QUEUE_SIZE 5
//ser.c #include"utili.h" int main(int argc, char const* argv[]) { //socket() int sockSer = socket(AF_INET, SOCK_STREAM, 0); if(sockSer == -1) { perror("socket Ser"); exit(EXIT_FAILURE); } struct sockaddr_in addrSer, addrCli; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.s_addr = inet_addr(IP_ADDRESS); //bind() socklen_t len = sizeof(struct sockaddr); int res = bind(sockSer, (struct sockaddr*)&addrSer, len); if(res == -1) { perror("bind"); close(sockSer); exit(EXIT_FAILURE); } //listen() res = listen(sockSer, LISTEN_QUEUE_SIZE); if(res == -1) { perror("Ser listen"); exit(EXIT_FAILURE); } //accept() int sockConn = accept(sockSer, (struct sockaddr*)&addrCli, &len); if(sockConn == -1) { printf("Server Accept Client Connect fail...\n"); close(sockSer); exit(EXIT_FAILURE); } else { printf("Server Accept Client Connect Ok...\n"); } //send(),recv() char sendbuf[256]; char recvbuf[256]; while(1) { printf("Ser:>"); scanf("%s", sendbuf); if(strcmp(sendbuf, "quit") == 0) break; send(sockConn, sendbuf, strlen(sendbuf)+1, 0); recv(sockConn, recvbuf, 256, 0); printf("Cli:>%s\n", recvbuf); } //close() close(sockSer); return 0; }
//cli.c #include"utili.h" int main(int argc, char const* argv[]) { //socket() int sockCli = socket(AF_INET, SOCK_STREAM, 0); if(sockCli == -1) { perror("socket Cli"); exit(EXIT_FAILURE); } struct sockaddr_in addrSer; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.s_addr = inet_addr(IP_ADDRESS); socklen_t len = sizeof(struct sockaddr); //connect() int sockConn = connect(sockCli, (struct sockaddr*)&addrSer, len); if(sockConn == -1) { printf("Cli connect Ser fail...\n"); close(sockCli); exit(EXIT_FAILURE); } else { printf("Cli connect Ser ok...\n"); } //send(),recv() char sendbuf[256]; char recvbuf[256]; while(1) { recv(sockCli, recvbuf, 256, 0); printf("Ser:>%s\n", recvbuf); printf("Cli:>"); scanf("%s", sendbuf); if(strcmp(sendbuf, "quit") == 0) break; send(sockCli, sendbuf, strlen(sendbuf)+1, 0); } //close() close(sockCli); return 0; }
相关文章推荐
- Java 利用套接字Socket实现简单的服务器与客户端通信
- Java 利用套接字Socket实现简单的服务器与客户端通信
- Linux C实现简单的UDP服务器客户端通信
- C#利用TcpListener和TcpClient类实现服务器和客户端的通信
- 利用socket TCP协议实现客户端与服务端简单通信
- 《JavaWeb---简单应用---服务器向客户端提供音乐资源(三)》--- 利用struts实现文件下载,下载时改变文件的名称
- C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- UDP简单实现并发服务器和客户端简单通信
- 利用Tcp和socket实现的客户端与服务端的简单通信
- C#利用服务器实现客户端之间通信
- Java实现服务器和客户端简单通信
- ACE+线程池实现一个简单的服务器+多客户端通信程序
- C# 利用Socket类实现客户端和服务器之间的通信,可在本机之间实现信息交互
- volley+Express实现简单的客户端服务器通信
- socket编程(一),实现服务器与客户端简单通信
- Java中利用socket实现简单的服务端与客户端的通信(入门级)
- Android中socket编程实现简单的客户端和服务器之间的通信
- 实现vs2013客户端服务器之间的简单通信,hello world 程序。
- 网络编程:使用Socket实现简单的服务器和客户端的通信