iOS socket 套接字编程

swift socket学习 项目中用到socket 传输数据,在网上找了不少资料。 ios 的soket底层是1983年发布的基于Berkeley Socket API 标准的BSD 套节子。 整体的结构为 BSDsocket ->CFNetwork-> NSUrl->WebKit 基于BSD编程的详细介绍可以在《IOS and OS X Network Programming Cookbook》中进行学习 特别要提 阅读详情

服务端:

#import "ViewController.h"

#import <sys/socket.h>
#import <netdb.h>

@interface ViewController ()

@end


#define SOCKET int
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    SOCKET Socket_Client;
    
    //创建 socket
    Socket_Client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (Socket_Client == INVALID_SOCKET)
    {
        printf("socket error");
        return;
    }
    
    struct sockaddr_in sockaddr;
    
    //初始化地址信息
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(8000); //8000端口
    sockaddr.sin_addr.s_addr = INADDR_ANY; //表示所有可用的地址
    
    //绑定 socket
    if (bind(Socket_Client,(struct sockaddr*)&sockaddr,sizeof(sockaddr)) == SOCKET_ERROR)
    {
        printf("bind error");
        return;
    }
    
    //监听
    if (listen(Socket_Client,5) == SOCKET_ERROR)
    {
        printf("listen error");
        return;
    }
    
    SOCKET Socket_Server; //客户端
    struct sockaddr_in remoteAddr; //服务端地址
    int Addrlen = sizeof(remoteAddr);
    char revData[255];
    
    while (true)
    {
        //接收连接
        Socket_Server = accept(Socket_Client,(struct sockaddr*)&remoteAddr,&Addrlen);
        if (Socket_Client == INVALID_SOCKET)
        {
            printf("accept error");
            continue;
        }
        printf("连接成功");
        
        //接收数据
        int ret = recv(Socket_Server,revData,sizeof(revData),0);
        if (ret > 0)
        {
            printf("recv: %s",revData);
        }
        
    }
    
    close(Socket_Server);  //关闭socket
}

客户端:

#import "ViewController.h"

#import <sys/socket.h>
#import <netdb.h>
#import <arpa/inet.h>

#define SOCKET int
#define INVALID_SOCKET -1

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建Socket
    SOCKET Socket_Server;
    Socket_Server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if (Socket_Server == INVALID_SOCKET)
    {
        printf("Socket error");
        return;
    }
    
    //初始化地址
    struct sockaddr_in ClientAddr;
    ClientAddr.sin_family = AF_INET;
    ClientAddr.sin_port = htons(8000);
    ClientAddr.sin_addr.s_addr = inet_addr("192.168.4.107");
    
    //循环连接
    while (true)
    {
        //连接
        if (connect(Socket_Server,(struct sockaddr*)&ClientAddr,sizeof(ClientAddr)) < 0)
        {
            printf("connect error\n");
            sleep(3);
            continue;
        }
        printf("连接成功");
        break;
    }
    
    //发送
    if (send(Socket_Server,"上线了",sizeof("上线了"),0) < 0)
    {
        printf("send error");
        return;
    }
    
    //关闭Socket
    close(Socket_Server);
    
    // Do any additional setup after loading the view, typically from a nib.
}


原始套接字编程 linux原始套接字编程,利用原始套接字实现arp请求和接收源代码 立即下载

相关推荐

原始套接字

原始套接字 主要是linux 网络方面 原始套接字 主要是linux 网络方面

IOS网络入门-Socket套接字

Tip1:网络基础 1.计算机网络三部分组成: (1)资源子网:面向用户的部分,负责全网络面向应用的数据处理。 (2)通信子网:负责数据通信 (3)通信协议:通信双方必须遵守的规则和约定。 2.分类:广域网、局域网 3.网络体系结构 OSI(Open System Interconnection)开放系统网络互联: (1)物理层:物理设备,原始比特流传输 (2)数据链路层:网

Phyllis2016的博客 1561

QGIS中高效处理CAD数据的两种实用技巧

本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。

weixin_28363123的博客 117

iOS高级理论:UDP的介绍和使用

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。

长沙火山 1912

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

weixin_42028275的博客 1500

别再用默认参数了!手把手教你用2P2Z补偿网络优化Buck电源的动态性能

本文详细介绍了如何通过2P2Z补偿网络优化Buck电源的动态性能,解决默认参数下的负载阶跃响应问题。从频域分析到元件选型,再到实测验证,手把手教你提升相位裕度,显著降低超调量和稳定时间,适用于DCDC和开关电源设计。

weixin_33657398的博客 258

[Linux]-原始套接字

原始套接字指的是在传输层下面使用的套接字,之前使用的流式套接字和数据报套接字是工作在传输层的,并且在接受和发送的时候只能对数据部分进行操作,如果想要自己组建一个报文,那么就需要使用原始套接字。并且原始套接字还可以监听所有经过本机网卡的数据帧或者数据包。

levi的博客 2045

STM32 ST-LINK Utility固件烧录全流程详解与实战技巧

本文详细解析了使用STM32 ST-LINK Utility进行固件烧录的全流程与实战技巧。从硬件连接、软件安装、核心三步操作(连接、擦除、烧录)到进阶的选项字节配置与批量脚本烧录,提供了完整的避坑指南和问题排查方案,帮助开发者高效完成STM32程序下载。

lambda的博客 768

iOS中基于Socket的 C/S 结构网络通信(上)

Socket ga

Carl-w 2299

Autosar开发实战:DaVinci Configurator Pro新建工程保姆级教程(附目录结构解析)

本文详细介绍了使用DaVinci Configurator Pro创建Autosar工程的完整流程,包括环境准备、工程配置、目录结构解析及常见问题排查。通过实战演示和深度解读,帮助开发者快速掌握工具使用技巧,优化工程管理,提升开发效率。特别适合需要理解Autosar开发中DaVinci Config工具链的工程师。

weixin_30872157的博客 458

面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音

面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效

帅小柏的博客 271

原始套接字编程:raw socket

raw socket即原始套接字编程: 一、udp发送数据 1.1 代码 代码的意义是:执行dig @8.8.8.8 www.guowenyan.cn,抓包获取二进制信息。 利用raw socket发送该二进制信息,相当于执行了dig命令。 #include #include #include #include #include #include using namespac

kanguolaikanguolaik的专栏 2013

电子技术课程设计:声音音量峰值检测显示系统设计

本文介绍了声音音量峰值检测显示系统的设计方案。系统采用分立元件设计,不使用单片机和集成运放,包含电源模块、声音采集放大电路、峰值检测保持模块、比较器、A/D转换及显示控制等部分。麦克风信号经两级晶体管放大后,通过二极管-电容电路检测峰值并保持,再经A/D转换显示为数字值(0000-9999)。系统采用9V电池供电,包含启动/清除控制功能,能指示声音过低或过高状态。详细阐述了各模块电路设计、参数计算和仿真验证,并提供了完整的原理图和PCB布线方案。该系统实现了声音峰值电压的准确检测与数字显示功能。

huanghm88的专栏 257

ios Socket套接字编程

Server端: 用CFSocketCreate()创建socket; 再用CFSocketSetAddress()设置地址; 再用CFSocketCreateRunLoopSource()把socket添加到runloop; 在socket的回调方法中用CFStreamCreatePairWithSocket()创建绑定到socket的 CFReadStreamR

yuanya的专栏 1623

【Python3教程】Python3高级篇之uWSGI 安装配置

本文介绍了在Python 3环境中安装和配置uWSGI的完整流程,涵盖基本安装、Flask/Django应用部署、Nginx集成以及systemd管理等关键环节。主要内容包括:uWSGI的安装前提条件,创建简单WSGI应用,编写uWSGI配置文件(.ini格式),与Nginx配合实现生产环境部署,以及使用systemd实现服务管理。文章还提供了常见Web框架(Flask、Django)的部署示例和高级配置建议,如负载均衡、HTTPS设置等。最后列出了权限、端口占用等常见问题的解决方案,为开发者提供了一套完整

No8g攻城狮的博客 438

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ios Socket套接字编程(转)

Server端: 用CFSocketCreate()创建socket; 再用CFSocketSetAddress()设置地址; 再用CFSocketCreateRunLoopSource()把socket添加到runloop; 在socket的回调方法中用CFStreamCreatePairWithSocket()创建绑定到socket的 CFReadSt...

weixin_30460489的博客 87

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

iOS TCPSocket讲解

今天来讲讲TCP 套接字编程,明天讲讲UDP编程。这方面在企业应用还是很重要的,很多聊天现在都是用套接字,不用XMPP,但是XMPP,还是聊天的主流,有事没事看看RFC3920,功能还是很强大的。 一、Socket 简介 在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机

JackYang的博客 2076

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CocoaAsyncSocket 文档1:Socket简单介绍

前言 CocoaAsyncSocket是 IOS下广泛应用的Socket三方库,网上相关样例数不胜数。这里我就不直接上代码,本文由B9班的真高兴发表于优快云博客。另辟一条思路:翻译SocketAsyncSocket的文档 原文地址:https://github.com/robbiehanson/CocoaAsyncSocket/wiki/Intro Introd...

weixin_34364135的博客 165

11 - 网络编程之设备间通信原理

一、网络编程 1表现形式:一台机子上的应用程序和另外一个设备的程序之间能够互相交换数据。 2 7层网络结构 硬件层:解决硬件连接问题 数据链路层:解决硬件之间能够向指定设备传输数据 IP:为设备提供一个虚拟的网络逻辑地址(门牌号) MAC:设备的物理地址(网卡) 3 TCP / UDP 是两个不同的数据传输协议,就是解析字节的方式不同 目的:保证数据在设备和设备之间能够...

a1250156的博客 540

IOS UDP TCP SOCKET

第一部分、概念的理解 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。 Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发

水泽木兰 1909

Socket

1.相关理论 socket:顾名思义接口,套接字,他不是协议是而是一个抽象层,位置在服务层下与传输层之上的中间。socket主要解决计算机系统多个程序占用同一个端口问题。当多个程序公用一个80端口时,当有数据传输是不知道具体哪个程序接受数据的难题。如果说tcp/udp定义了数据怎么传输,那么socket就是具体执行者。socekt定义了点到点双向传输机制。他是成对出现 点a一个socket 点b一...

江苏小白龙 300

IOS Socket使用大全 -将持续更新

Socket使用大全 第一部分、概念的理解 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。 Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务

ch_soft的专栏 7万+

iOS网络编程-iOS中Socket编程介绍

使用Socket进行C/S结构编程,连接过程 服 务器端监听某个端口是否有连接请求。服务器端程序处于堵塞状态,直到客户端向服务器端发出连接请求,服务器端接受请求程序才能向下运行。一旦连接建立起 来,通过Socket可以获得输入输出流对象。借助于输入输出流对象就可以实现与客户端的通讯,最后不要忘记关闭Socket和释放一些资源(包括:关闭 输入输出流)。 客户端流程是先指定要通讯...

weixin_30830327的博客 82

iOS 网络编程之socket

1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。 Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息

lanzeng_in_sz的专栏 574

ios Socket使用大全

讲得太好了!   Socket使用大全 第一部分、概念的理解 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。 Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给

iOS开发专栏 2017

Socke研究

Berkeley 套接字(也称为BSD 套接字)应用程序接口(API)包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯,在计算机网络通讯方面被广泛使用。查看地址:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97

liuwuguigui的专栏 705
上一篇: iOS Hacker 动态库 dylib 注入
下一篇: iOS 应用的生命周期
sysprogram
博客等级 码龄17年 298粉丝 442原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值