zoukankan      html  css  js  c++  java
  • socket TCP简单通讯

    socket 服务器

    //
    //  main.m
    //  socket_server
    //
    //  Created by lujunjie on 2016/11/23.
    //  Copyright © 2016年 lujunjie. All rights reserved.
    //
    
    #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 sockfd = -1;
            sockfd =  socket(AF_INET, SOCK_STREAM, 0);// 协议族、套节字可靠性传输、0
            if(sockfd == -1)
            {
                NSLog(@"error:打开套节字描述符失败socket()");
                return 0;
            }
            NSLog(@"打开套节字描述sockfd:%d",sockfd);
            
            // 第二步:bind 绑定sockfd和当前电脑的ip地址&端口号
            struct sockaddr_in serveraddr;
            serveraddr.sin_family = AF_INET;
            serveraddr.sin_port = htons(30000); // 5000~655355
            serveraddr.sin_addr.s_addr = inet_addr("192.168.1.103");
            int ret =bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
            if (ret < 0) {
                 NSLog(@"error:bind");
                return 0;
            }
            NSLog(@"bind-ret:%d",ret);
            
            // 第三步:listen监听端口
            int listenRet = listen(sockfd, 10);// ..,监听多少个;
            if (listenRet < 0) {
                NSLog(@"error:listen");
                return 0;
            }
            NSLog(@"listen-ret:%d",listenRet);
            
            // 第四步:accept阻塞等待客户端接入
            struct sockaddr_in clientaddr;
            socklen_t len = 0;
            int clientfd = accept(sockfd, (struct sockaddr *)&clientaddr, &len);
            if (clientfd < 0) {
                NSLog(@"error:accept");
                return 0;
            }
            NSLog(@"accept-clientfd:%d",clientfd);
            NSLog(@"成功建立连接");
            
            // 建立连接之后通信
            char recvbuf[100];
            memset(recvbuf, 0, sizeof(recvbuf));
    //        
    //        long recvRet = recv(clientfd, recvbuf, sizeof(recvbuf), 0);
    //        
    //        NSLog(@"成功接收了%ld个字节
    ",recvRet);
    //        NSLog(@"client发送过来的内容是:%s",recvbuf);
    //        printf("client发送过来的内容是:%s",recvbuf);
            
            while (1) {
                long recvRet = recv(clientfd, recvbuf, sizeof(recvbuf), 0);
                NSLog(@"成功接收了%ld个字节
    ",recvRet);
                NSLog(@"NSLogclient发送过来的内容是:%s",recvbuf);
                memset(recvbuf, 0, sizeof(recvbuf));
            }
            
        }
        return 0;
    }

    socket客户端

    //
    //  main.m
    //  socket_client_Command
    //
    //  Created by lujunjie on 2016/11/23.
    //  Copyright © 2016年 lujunjie. All rights reserved.
    //
    
    #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(@"socket_client_Command");
            
            // 第一步:打开套节字描述
            int sockfd = -1;
            sockfd =  socket(AF_INET, SOCK_STREAM, 0);// 协议族、套节字可靠性、0
            if(sockfd == -1)
            {
                NSLog(@"error:打开套节字描述符失败socket()");
                return 0;
            }
            NSLog(@"打开套节字描述sockfd:%d",sockfd);
            
            // 第二步:connect 链接服务器
            struct sockaddr_in serveraddr;
            serveraddr.sin_family = AF_INET;
            serveraddr.sin_port = htons(30000); // 5000~655355
            serveraddr.sin_addr.s_addr = inet_addr("192.168.1.103");
            int ret = connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
            if (ret < 0) {
                NSLog(@"error:connect");
                return 0;
            }
            NSLog(@"connect-ret:%d",ret);
            NSLog(@"成功建立连接");
            
            char sendbuf[100];
    //        
    //        strcpy(sendbuf, "cliend:hello world");
    //        long retstr=send(sockfd, sendbuf,strlen(sendbuf),0);
    //        
    //        NSLog(@"发送了%ld个字符
    ",retstr);
            
            while (1) {
                NSLog(@"请输入要发送的内容
    ");
                scanf("%s",sendbuf);
                long retstr=send(sockfd, sendbuf,strlen(sendbuf),0);
                NSLog(@"发送了%ld个字符
    ",retstr);
                
            }
            
            
            
        }
        return 0;
    }

  • 相关阅读:
    使用 git 托管代码
    转载自网络大神
    i18n 国际化
    转自知乎大神---什么是 JS 原型链?
    转自知乎大神----JS 闭包是什么
    转自知乎大神----JS 的 new 到底是干什么的?
    转载自知乎大神---this 的值到底是什么?一次说清楚
    sql查看本机IP地址
    Python 编码规范(Google)
    Python在mysql中进行操作是十分容易和简洁的
  • 原文地址:https://www.cnblogs.com/-ljj/p/6095876.html
Copyright © 2011-2022 走看看