ios 一个简单的socket通信例子:

服务器端:

#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;
}




代码比较简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值