实现的功能是可以socket服务器允许多个客户端连接,连接到服务器的时候能够打印出连接的IP地址和端口,服务端连接到数据能够将客户端的IP地址和发送内容打印出来。
效果:
服务端
appledeMacBook-Pro:聊天室 apple$ ./a.out 8888
有一个远程机器连接到本机,ip地址:127.0.0.1,端口:40927
分配句柄成功
从客户端:127.0.0.1获取到数据vvv
从客户端:127.0.0.1获取到数据0f
从客户端:127.0.0.1获取到数据.test data
客户端
appledeMacBook-Pro:c++Primer apple$ telnet 127.0.0.1 8888
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
恭喜你成功连接到本服务器
vvv
vvv
0f
.0f
test data
.test data
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <pthread.h> struct ClientInfo{ int newsockfd; char* Ip; }clientInfo; void* connection_handler(void *); void error(const char *msg) { perror(msg); exit(1); } //因为是直接通过telent测试在发送的时候会带一个 不能直接通过strcmp来比,所以写了下面的程序来处理 int isExit(char *s1) { if(strlen(s1)<6) { return 0; } char const *str="quit"; while(*str!='