服务器端:
#import <Foundation/Foundation.h> #import <sys/socket.h> #import <netinet/in.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); int serverFD = socket(AF_INET, SOCK_STREAM, 0); if (serverFD<0) { NSLog(@"error socket "); } struct sockaddr_in sockIPcon; sockIPcon.sin_len = sizeof(sockIPcon); sockIPcon.sin_family = AF_INET; sockIPcon.sin_port = htons(5200); sockIPcon.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(serverFD, (struct sockaddr*)&sockIPcon, sizeof(sockIPcon))<0) { NSLog(@"error bind "); } if (listen(serverFD, 1024)<0) { NSLog(@"error listen "); } long idataNum; char buffer[4]; struct sockaddr_in clentIPcon; int clientSocket; while (YES) { clientSocket = accept(serverFD, (struct sockaddr *)&clentIPcon, (socklen_t *)&clentIPcon); if (clientSocket<0) { NSLog(@"error clientSocket "); } idataNum = recv(clientSocket, buffer, sizeof(buffer), 0); if (idataNum < 0) { NSLog(@"error recv "); } NSLog(@"idata %ld",idataNum); if (idataNum == 4) { idataNum = recv(clientSocket, buffer, sizeof(buffer), 0); if (idataNum < 0) { NSLog(@"error recv "); } printf("second length: %ld second recv data is %s\n", idataNum, buffer); } buffer[idataNum] = '\0'; if (strcmp(buffer, "quit") == 0) { break; } char sendbuf[200] = "quit"; printf("%ldrecv data is %s\n", idataNum, sendbuf); send(clientSocket, sendbuf, strlen(sendbuf), 0); } } return 0; }
客户端:
#import <Foundation/Foundation.h> #import <sys/socket.h> #import <netinet/in.h> #import <arpa/inet.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); int clinetsocker ; struct sockaddr_in serverAddr; char sendbuf[200] = "1"; char recvbuf[200] ; if ((clinetsocker = socket(AF_INET, SOCK_STREAM, 0))<0) { NSLog(@"socket error"); } serverAddr.sin_family = AF_INET; serverAddr.sin_len = sizeof(serverAddr); serverAddr.sin_port = htons(5200); serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(clinetsocker, (struct sockaddr *)&serverAddr, sizeof(serverAddr))<0) { printf("connect error"); } long idataNum; while (YES) { send(clinetsocker, sendbuf, strlen(sendbuf), 0); if (strcmp(sendbuf, "quit")==0) { break; } idataNum = recv(clinetsocker, recvbuf, 200, 0); // recvbuf[idataNum] = '\0'; printf("recv %s length:%d idata:%d",recvbuf,strlen(recvbuf),idataNum); } } return 0; }
代码比较简单