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;
}
socket 套接字的更多相关文章
- java 25 - 3 网络编程之 Socket套接字
Socket Socket套接字: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. Socket原理机制: 通信的两端都有Socket. 网络通信其实就是Socket ...
- 进程、线程、socket套接字-资源大小 & 切换代价
另,进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 今天查了一下进程和线程的资源占用. 比如问:栈和堆的大 ...
- linux网络环境下socket套接字编程(UDP文件传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- socket套接字TCP API
socket套接字TCP API socket概念 socket又称"套接字",是计算机网络中进程间通信数据通道的一个端点.或称之为句柄.IP地址+port号就能够唯一确定一个so ...
- 进程间通信系列 之 socket套接字实例
进程间通信系列 之 概述与对比 http://blog.csdn.net/younger_china/article/details/15808685 进程间通信系列 之 共享内存及其实例 ...
- 进程间通信系列 之 socket套接字及其实例
进程间通信系列 之 概述与对比 http://blog.csdn.net/younger_china/article/details/15808685 进程间通信系列 之 共享内存及其实例 ...
- 一、网络编程-UDP传输协议及socket套接字使用
知识点基本介绍:1.网络通信协议一般就是UDP和TCP俩种传输协议,这一章先说UDP,UDP是一种比较简单的传输协议,如qq使用的就是UDP 2.ip:ip就是标记网络中中的一台电脑 ...
- 网络编程初识和socket套接字
网络的产生 不同机器上的程序要通信,才产生了网络:凡是涉及到倆个程序之间通讯的都需要用到网络 软件开发架构 软件开发架构的类型:应用类.web类 应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌 ...
- 传输模型, tcp socket套接字
osi七层模型 tcp/ip四层模型 socket套接字 tcp 协议是可靠的 包括 三次握手 四次挥手 import socket # server server = socket.socket( ...
随机推荐
- MFC 线程创建方式
MFC 分UI线程和工作线程,一般现在的应用程序都是一个主UI线程和N个工作线程来完成工作.主UI线程获取到工作线程发送的信息来刷新界面. 不过因为工作需要,MFC有要维护的项目,因此就学习一下MFC ...
- BochsDebug
Bochs User Manual Chapter 8. Tips and Techniques 8.12. Using Bochs internal debugger Note, if yo ...
- datagridview下拉框
下面介绍Winform中DataGridView的DataGridViewComboBoxColumn的使用方法: //首先获取数据源 //自己建立的静态数据源,你也可以从数据库读取 DataTabl ...
- MessageBox详解
MessageBox.Show();可谓是winform开发中用的次数最多的东东啦.先贴一张msdn的图解 msdn好像没有更新哎,只提供了这几种方法,并且参数名称和最新的有差别,但实际上messag ...
- WPF—TreeView无限极绑定集合形成树结构
1.如图所示:绑定树效果图 2.前台Xaml代码: <Window x:Class="WpfTest.MainWindow" xmlns="http://schem ...
- group by和distinct语句的执行顺序
同一条语句之中,如果同时有group by和distinct语句,是先group by后distinct,还是先distinct后group by呢? 先说结论:先group by后distinct. ...
- Python pass 语句使用示例
Python pass 语句的使用方法示例.Python pass是空语句,pass语句什么也不做,一般作为占位符或者创建占位程序,是为了保持程序结构的完整性,pass语句不会执行任何操作,比如: P ...
- 使用mitmf 来绕过HSTS站点抓取登陆明文
使用mitmf 来绕过HSTS站点抓取登陆明文 HSTS简介 HSTS是HTTP Strict Transport Security的缩写,即:"HTTP严格安全传输".当浏览器第 ...
- 亚信联创--java面试题目总结
这几天投简历,只有两家的HR表示感兴趣.易思卓越和亚信联创,不管怎样如果能有机会面试都一定尽力表现,所以找了找网上的面经,这里先把题目总结一下. 职位要求如下: ------------------- ...
- 【转】DCC32的参数详解
完整的内容如下: // DCC32编译器的设置说明. // Dcc32 [options] filename [options] // DCC32 [操作选项] 文件名称 [操作选项] // -A&l ...