socket 套接字
网络:交换机,路由器,网线
交换机:分配..
路由器:找寻网络线路
网络架构: 应用层 ---> 表示层 ---> 会话层 ---> 传输层 ---> 网络层 ---> 数据链路层 ----> 物理层
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 套接字相关推荐
- day7 面向对象进阶、socket套接字
文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...
- 三、初识Socket套接字结构体
一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...
- 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...
- Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现
上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...
- Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现
上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...
- java实现套接字网络编程_Java网络编程(一)Socket套接字
一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...
- C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)
#include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...
- Python开发基础----异常处理、socket套接字基础1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
- socket 套接字的基本概念
什么是套接字: socket套接字:一套网络通信的接口 (API), 一套函数, 本质是伪文件. 在网络环境中唯一的标识一个进程需要 IP 和端口,这个进程就是 socket,因此 socket 需要 ...
- 网络编程(part11)--socket模块方法及socket套接字属性
鄙人学习笔记 文章目录 socket模块方法及socket套接字属性 部分socket模块方法 举个例子 套接字属性 举个例子 写个案例 socket模块方法及socket套接字属性 部分socket ...
最新文章
- 面向JavaScript开发人员的Adobe AIR与Dreamweaver
- java中Arrays的用法
- jzoj3913-艰难的选择【差分,统计】
- 软件测试之控制流图以及环形复杂度独立路径求解问题
- MD5加密方式-工具类
- visio2016无法卸载和安装
- 龙星电脑横机制版软件_龙星制版软件下载 龙星电脑横机是什么系统
- poedit使用(本地化和国际化)
- 门锁MCU OTA升级指导文档
- 如何制作基于beaglebone的设备通知Texter ?---凯利讯半导体
- Linux内核之进程管理
- 杭州市一医院李勇挂号指南
- 华三c语言笔试,H3C笔试及答案解析
- Effective C++ 条款14
- JavaWeb Adv CH8 web服务的相互转接(多图猫杀)
- 底层程序员4年的逆袭之旅:穷屌丝-->小老板
- 信号分析之时间序列频谱分析
- fl studio怎么设置中文,fl studio21下载后如何语言设置/切换中文版
- Delphi 中自定义鼠标指针图像
- SAP中原材料供应商采购切换在系统控制分析
热门文章
- java 将数据库中的每一条数据取出放入数组或者List中
- 脱离标准文档流(1)---浮动
- 51nod1574排列转换
- swith 好久不用都忘记了
- linux系统下如何创建二级域名和删除这个目录文件
- Python sorted功能
- 第20章 TCP的成块数据流
- linux学习命令总结⑩②
- WDS系列之四:自定义安装映像
- python2.7个3.7之间传输文件_关于将python2.7转换为python3.7的说明,python27,python37,散记...