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

  • 相关阅读:
    Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
    Linux基础-正则表达式整理---------------grep、sed、awk
    Linux基础-配置网络、集群内主机名设定、ssh登入、bash命令、通配符(元字符)
    Linux基础-----------nginx安装和nginx web、nginx反向代理、nfs 服务
    Linux基础--------监控系统、进程管理、软件包管理-------free、dd、kill、 rpm、yum、源码安装python
    Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接
    Linux用户创建及权限管理
    django博客项目6:Django Admin 后台发布文章
    django博客项目5:博客首页视图(2)
    django博客项目4:博客首页视图(1)
  • 原文地址:https://www.cnblogs.com/-ljj/p/6095876.html
Copyright © 2011-2022 走看看