网络:交换机,路由器,网线

交换机:分配..

路由器:找寻网络线路

网络架构: 应用层 ---> 表示层 ---> 会话层 ---> 传输层 ---> 网络层 ---> 数据链路层 ----> 物理层

TCP/IP 商用: 应用层 ---> 传输层 ---> 网络层 ---> 物理+数据链路

socket 在传输层和应用层之间

TCP/IP 传输流程:

  

一次连接三次握手:客服端访问服务器端,服务器端响应,服务器访问客户端,客户端响应

套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

//服务器端

#import "AppDelegate.h"
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>

@interface AppDelegate (){
    
    //服务器标志
    
    int server_flag;
    
    //客户端标志
    
    int client_flag;
    
    //地址
    struct sockaddr_in addr;
    
}

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 错误
    int error = -1;
    
#pragma mark --- 服务器端设置 ---
    
    //创建服务器端 (IP类型,通信协议, )
    server_flag = socket(AF_INET, SOCK_STREAM, 0);
    
    //将服务器绑定到一个具体的计算机
    //端口
    addr.sin_port = htons(9006);
    //计算机
    addr.sin_addr.s_addr = INADDR_ANY;
    //IPV4
    addr.sin_family = AF_INET;
    
    //server_flag 绑定
    
    error = bind(server_flag, (struct sockaddr*)&addr, sizeof(addr));
    
    //最大连接数
    error = listen(server_flag, 100);
    
    printf("服务器启动成功!\n");
    
    //等待
    
    while (YES) {
        //等待接收
        client_flag = accept(server_flag, NULL, NULL);
        
        
        //保存接收数据
        //字符数组
        char buff[1024] = {0};
        
        //接收数据长度
        long length = 0;
        
        length = recv(client_flag, buff, 1024, 0);
        
        buff[length] = '\0';
        printf("client asy : %s \n",buff);
        
        //发送数据
        send(client_flag, "hello world", 80, 0);
        
        close(server_flag);
        
    }
    
    
    return YES;
}

//客户端

#import "AppDelegate.h"
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>

@interface AppDelegate ()
{
    int client_flag ;
    
    struct sockaddr_in server;

}

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    
    int error = -1;
    
    client_flag = socket(AF_INET, SOCK_STREAM, 0);
    
    server.sin_family = AF_INET;
    server.sin_port = htons(9006);
    server.sin_addr.s_addr = inet_addr("172.18.16.158");
    
    error = connect(client_flag, (struct sockaddr*)&server, sizeof(server));
    send(client_flag, "鲁二蛋", 1024, 0);
    
    char buff[1024] = {0};
    
    long length = 0;
    
    
    
    length = recv(client_flag, buff, 1024, 0);
    
    buff[length] = '\0';
    printf("server say : %s\n",buff);
    
//    close(client_flag);
    
    return YES;
}

转载于:https://www.cnblogs.com/Ager/p/5076953.html

socket 套接字相关推荐

  1. day7 面向对象进阶、socket套接字

    文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...

  2. 三、初识Socket套接字结构体

    一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...

  3. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程

    基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...

  4. Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

    上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...

  5. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现

    上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...

  6. java实现套接字网络编程_Java网络编程(一)Socket套接字

    一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...

  7. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

  8. Python开发基础----异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  9. socket 套接字的基本概念

    什么是套接字: socket套接字:一套网络通信的接口 (API), 一套函数, 本质是伪文件. 在网络环境中唯一的标识一个进程需要 IP 和端口,这个进程就是 socket,因此 socket 需要 ...

  10. 网络编程(part11)--socket模块方法及socket套接字属性

    鄙人学习笔记 文章目录 socket模块方法及socket套接字属性 部分socket模块方法 举个例子 套接字属性 举个例子 写个案例 socket模块方法及socket套接字属性 部分socket ...

最新文章

  1. 面向JavaScript开发人员的Adobe AIR与Dreamweaver
  2. java中Arrays的用法
  3. jzoj3913-艰难的选择【差分,统计】
  4. 软件测试之控制流图以及环形复杂度独立路径求解问题
  5. MD5加密方式-工具类
  6. visio2016无法卸载和安装
  7. 龙星电脑横机制版软件_龙星制版软件下载 龙星电脑横机是什么系统
  8. poedit使用(本地化和国际化)
  9. 门锁MCU OTA升级指导文档
  10. 如何制作基于beaglebone的设备通知Texter ?---凯利讯半导体
  11. Linux内核之进程管理
  12. 杭州市一医院李勇挂号指南
  13. 华三c语言笔试,H3C笔试及答案解析
  14. Effective C++ 条款14
  15. JavaWeb Adv CH8 web服务的相互转接(多图猫杀)
  16. 底层程序员4年的逆袭之旅:穷屌丝-->小老板
  17. 信号分析之时间序列频谱分析
  18. fl studio怎么设置中文,fl studio21下载后如何语言设置/切换中文版
  19. Delphi 中自定义鼠标指针图像
  20. SAP中原材料供应商采购切换在系统控制分析

热门文章

  1. java 将数据库中的每一条数据取出放入数组或者List中
  2. 脱离标准文档流(1)---浮动
  3. 51nod1574排列转换
  4. swith 好久不用都忘记了
  5. linux系统下如何创建二级域名和删除这个目录文件
  6. Python sorted功能
  7. 第20章 TCP的成块数据流
  8. linux学习命令总结⑩②
  9. WDS系列之四:自定义安装映像
  10. python2.7个3.7之间传输文件_关于将python2.7转换为python3.7的说明,python27,python37,散记...