服务器端:
#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;
}
代码比较简单