首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏学习之路

    【Linux网络#2】: Socket 编程

    (从应用层上看,不用看网络栈的底层传输) 要进程间通信,就要先把进程标识出来 2. 认识端口号 定义: 端口号是传输层协议的一部分。 特点: 端口号是一个 2 字节(16 位)的整数 用于标识一个进程,告诉操作系统当前的数据应交给哪个进程处理 IP 地址 + 端口号 可以唯一标识网络上某台主机的某个进程 一个端口号只能被一个进程占用 Socket 编程 6.1 socket 常见API Socket API 是一层网络编程接口,抽象了底层的网络协议,定义在 netinet/in.h 中。 实际上在网络上通信的时候套接字种类是比较多的,下面是常见的三种: unix 域间套接字编程--同一个机器内 原始套接字编程--网络工具 网络套接字编程--用户间的网络通信 设计者想将网络接口统一抽象化 --参数的类型必须是统一的,底层是一种多态的设计 运用场景: 网络套接字:运用于网络跨主机之间通信+本地通信 unix域间套接字: 本地通信 我们现在在使用网络编程通信时是应用层调传输层的接口,而原始套接字

    77210编辑于 2025-06-02
  • 来自专栏技术杂记

    网络编程(一).TCP(2)

    5]={0}; char *filename=argv[2]; //进行变量的定义和初始化 if(argc ! 3) { printf("error number of argc:%d\n",argc); return res; } if (-1==(fa=open(argv[2] buf) ); //如果读取的数据不再是一整块,就意味着已经读完,随即跳出循环 if (-1 == (recvbytes=recv(sfd,buf2,5,0))) //从远端读取数据到buf2中 { perror("send"); return res; } printf("%d -->%s\n",recvbytes,buf2); //将接收到的字节数和数据内容打印出来 /tcpcopyclient.x 127.0.0.1 4.png 2 -->OK emacs@ubuntu:~/c$ 服务端会打印信息并且返回,对比两个文件也没有差异 emacs@ubuntu:~/

    69910发布于 2021-09-15
  • 来自专栏程序编程之旅

    Java---网络编程(2)-UDP

    在连接中进行大数据量传输 通过三次握手完成连接,是可靠协议 必须建立连接,效率会稍低 Socket 和 ServerSocket类 ☆ Socket Socket就是为网络服务提供的一种机制 网络通信其实就是Socket间的通信。 数据在两个Socket间通过IO传输。 UDP传输 DatagramSocket与DatagramPacket 建立发送端,接收端。 UDP传输编程 ☆发送端 在发送端,要在数据包对象中明确目的地IP及端口。 ; break; } } ds.close(); } } 好了,到现在就可以实现2台联网的机子的互动了。

    68010发布于 2021-01-21
  • 来自专栏嘘、小点声

    python网络爬虫(2)回顾Python编程

    server_addr) # 端口和验证口令注意保持与服务进程设置的完全一致: m = QueueManager(address=(server_addr, 8001), authkey='qiye') # 从网络连接 Queue.Queue() result_queue=Queue.Queue() class Queuemanager(BaseManager): pass #实现第二步:把创建的两个队列注册在网络上 ,利用register方法,callable参数关联了Queue对象, # 将Queue对象在网络中暴露 Queuemanager.register('get_task_queue',callable= .' for i in range(10): print 'result is %s' %result.get(timeout=10) #关闭管理 manager.shutdown() TCP编程 b'Hello,I am a client') print('-->>'+s.recv(1024).decode('utf-8')) s.send(b'exit') #关闭套接字 s.close() UDP编程

    92920发布于 2019-07-31
  • 来自专栏知识同步

    网络编程学习笔记2-ttcp

    /ttcp_muduo -r #服务端 1.5总结 我算是个linux小白吧,生成、安装和编译这些操作不是很熟悉,感觉服务器最复杂的就是一开始的环境设置了,如果能用docker技术来解决一下就好了 2两个独立虚拟机使用 /ttcp_muduo -t 192.168.200.133 这里响应失败,还没找到原因 {% asset_img 图2.png 图2.png %} 找到原因了,原来是因为服务端5001端口没开放

    49610编辑于 2022-12-26
  • 来自专栏小雨的CSDN

    网络编程(2)——TCP 协议

    网络编程需要依靠Socket API,在java标准库中有两种风格: 1.(UDP)DatagramSocket:面向数据报(发送接收数据,必须以一定的数据报为单位进行传输) 2. (TCP)ServerSocket:面向字节流 UDP和TCP就是传输层的两个最重要的协议 TCP 服务器逻辑: 1.初始化服务器 2.进入主循环 1)先去从内核中获取到一个TCP的连接 2)处理这个 import java.net.ServerSocket; import java.net.Socket; public class TcpEchoServer { //1.初始化服务器 //2. 进入主循环 // 1)先去从内核中获取到一个TCP的连接 // 2)处理这个TCP的连接 // a)读取请求并解析 // b)根据请求计算响应 / accept就会阻塞,直到有客户建立连接了才停止阻塞 Socket clientSocket = serverSocket.accept(); // 2)

    64420编辑于 2022-10-26
  • 来自专栏刘望舒

    Android网络编程(十)Retrofit2后篇

    前言 在上一篇Android网络编程(九)Retrofit2前篇[基本使用]中我们了解了Retrofit的最基本的GET方式访问网络的写法以及请求参数的简单介绍。 请求网络接口代码如下所示。 ? 在GET注解中包含了{path},它对应着@Path注解中的”path”,而用来替换{path}的正是需要传入的 “String path”的值。 接下来请求网络的代码如下所示。 ? 在注释1处,传入”service”来替换 @GET注解中的{path}的值。 2.POST请求访问网络 传输数据类型为键值对:@Field 传输数据类型为键值对,这是我们最常用的POST请求数据类型,淘宝ip库支持数据类型为键值对的POST请求: ? 接下来请求网络的代码如下所示。 ? 传输数据类型Json字符串:@Body 我们也可以用POST方式将Json字符串作为请求体发送到服务器,请求网络接口代码为: ?

    1.6K60发布于 2018-02-01
  • 来自专栏Netty应用与源码

    Netty基础—2.网络编程基础二

    大纲1.网络编程简介2.BIO网络编程3.AIO网络编程4.NIO网络编程之Buffer5.NIO网络编程之实战6.NIO网络编程之Reactor模式1.网络编程简介既然是通信,那么肯定会有两个对端。 所以在网络编程里,ServerSocket并不负责具体的网络读写,ServerSocket只负责接收客户端连接后分配一个Socket处理具体网络读写。 这一点对所有模式(BIO、AIO、NIO)的网络编程都适用。在网络编程里,开发者关注的其实就三个事情:一.建立网络连接客户端连接服务端,服务端等待和接收连接。 二.读网络数据三.写网络数据所有模式的通信编程(BIO、AIO、NIO)都是围绕上面这三件事情进行的。 2.BIO网络编程(1)BIO即阻塞IO模型(2)BIO编程介绍(3)BIO模型的问题与改进(4)BIO编程的标准模式(5)BIO编程的例子(1)BIO即阻塞IO模型(2)BIO编程介绍服务端提供IP和端口

    41810编辑于 2025-05-16
  • 来自专栏程序编程之旅

    JavaScript---网络编程(2)-函数与数组

    代码演示2: <html> <head> <title>javascript函数用法演示2---一点小细节</title> </head> <body> <script type="text/ = getValue; //相当于getValue把引用值传给v<em>2</em>,因此v<em>2</em>也是一个“function对象”----getValue和v<em>2</em>都是引用变量 document.write("v2 =" + v2);//其实是输出v2对象的toString() document.write("
    "); document.write("v2=" + v2()) -- ※2※ 匿名函数: 没有函数名的函数。 arr2[1]=10; for(var x=0;x<arr2.length;x++){ document.write("arr2["+x+"]="+ arr2[x

    74210发布于 2021-01-21
  • 来自专栏changxin7

    2.网络编程网络协议篇(osi七层协议)

    2,找准确确定对方计算机(准确到软件)的位置。   3,通过统一的标准(一揽子协议)进行数据的收发。 物理连接介质,这个是网络工程师所考虑的,后面也会给大家简单的讲到,咱们主要就是学习这统一的标准。 中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址 mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制 :引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址 IP协议: 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示 范围 三 网络通信实现 想实现网络通信,每台主机需具备四要素 本机的IP地址 子网掩码 网关的IP地址 DNS的IP地址 获取这四要素分两种方式 1.静态获取 即手动配置 2.动态获取 通过dhcp获取 以太网头 (2)后面的”IP标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

    99340发布于 2019-08-20
  • 来自专栏陶辉笔记

    高性能网络编程2—-TCP消息的发送

    1、MSS与TCP的分片 由上一篇文中可知,TCP层是第4层传输层,第3层IP网络层、第2层数据链路层具备的约束条件同样对TCP层生效。下面来看看数据链路层中的一个概念:最大传输单元MTU。 看看IP头部的格式: 图2 IP头部格式 可以看到,其指定IP包总长度的是一个16位(2字节)的字段,这意味一个IP包最大可以是65535字节。 2、发送方法返回成功后,数据一定发送到了TCP的另一端吗? 答案当然是否定的。解释这个问题前,先来看看TCP是如何保证可靠传输的。 (2)内核主要通过tcp_sendmsg方法来完成。 (3)(4)内核真正执行报文的发送,与send方法的调用并不是同步的。即,send方法返回成功了,也不一定把IP报文都发送到网络中了。 after(end_seq, tp->snd_una + tp->snd_wnd);   }   (2)慢启动和拥塞窗口 由于两台主机间的网络可能很复杂,通过广域网时,中间的路由器转发能力可能是瓶颈。

    1.5K31发布于 2019-06-21
  • 来自专栏changxin7

    3.网络编程 网络编程

    还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程 print(from_client_data1) from_client_data2 = conn.recv(2) print(from_client_data2) from_client_data3 与客户端建立连接, 拨号 # 1 制定file_info file_info = { 'file_path': r'D:\lnh.python\pyproject\PythonReview\网络编程 len(every_data) phone.send(every_data) phone.close() client端 FTP上传下载文件的代码(升级版)(注:咱们学完网络编程就留 网络编程的作业   好了同学们,到了这儿,我们的网络编程socket就讲完了,大致就是这些内容,给大家留个作业:(你的努力的成果你自己是看的到的~!)   

    3.1K21发布于 2019-08-20
  • 来自专栏刘望舒

    Android网络编程(九)Retrofit2前篇

    前言 Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,而OkHttp现在已经得到Google官方认可,不了解OKHttp的请查看本系列的前作 ip=[ip地址字串] 2. 响应信息: (json格式的)国家 、省(自治区或直辖市)、市(县)、运营商 3. 返回数据格式: ? 其中code的值的含义为,0:成功,1:失败。 2.用Retrofit异步访问网络 编写实体类 我们可以用JSON字符串转换成Java实体类(POJO)这个网站将Json转为实体类,经过修改的实体类如下: IpModel.Java: ? 如果想同步请求网络请使用 call.execute(),如果想中断网络请求则可以使用 call.cancel()。 完整的代码如下: ? 其中@HTTP用来替换以上7个,其他的分别对应着不同的请求方法,不明白的请查看Android网络编程(一)HTTP协议原理这一篇文章。 @Query 前面的例子就用了Query用来查询参数。 ?

    1.7K60发布于 2018-02-01
  • 来自专栏我的博客

    【Linux网络】Socket编程:TCP网络编程

    在前面的文章中,我们使用了UDP进行网络编程,这篇文章我们就来使用另一个TCP进行网络编程,我们知道UDP和TCP都是传输层协议,但是特点不同,前者无连接,不可靠传输,面向数据报,后者有连接,可靠传输 大体框架 1.1 补充 首先,在之前的UDP网络编程中,我们是直接使用的硬编码,例如退出码直接就设为1、2、3等,显然这并不是一个很好的选择,那么这里我们可以统一设计一个服务器的退出码,就像之前设计日志等级一样 (网卡)发来的连接我们都愿意接受,所以我们地址结构中的成员 sin_addr 需要设置为 INADDR_ANY,也就是IP地址此时为0,这在UDP网络编程时我们已经详细介绍了原因,这意味着我们服务端在使用 直接向目标服务器发起建立连接的请求 return 0; } 我们这里也不需要显式bind,关于原因我们在udp网络编程时已经说明了,那我们应该做什么呢? ,上层服务我们可以和UDP网络编程一样,直接在服务端主程序调用其他的服务,就比如之前实现的翻译和路由转发,然后在服务端接收数据时,将数据回调处理,最后将结果写回客户端。

    44210编辑于 2025-12-22
  • 来自专栏程序编程之旅

    JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强

    arrTrs2[x - 1] = arrTrs[x]; } //arrTrs2数组可以看成arrTrs数组的引用 //对容器arrTrs2 x < arrTrs2.length; x++) { //arrTrs2[x].parentNode.nodeName//TBODY arrTrs2 [x].parentNode.appendChild(arrTrs2[x]); //arrTrs2数组可以看成arrTrs数组的引用 } arrTrs2[x - 1] = arrTrs[x]; } //arrTrs2数组可以看成arrTrs数组的引用 //对容器arrTrs2 arrTrs2[x].parentNode.appendChild(arrTrs2[x]); //arrTrs2数组可以看成

    94010发布于 2021-01-21
  • 来自专栏Coding Diary

    Java网络编程 -- AIO异步网络编程

    AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操作完成后,由系统自动触发。

    1.4K20发布于 2019-09-25
  • 来自专栏编程珠玑

    网络编程-一个简单的echo程序(2)

    前言 在《网络编程-一个简单的echo程序(0)》和《网络编程-一个简单的echo程序(1)》中分别介绍了echo程序的整体流程和用到的数据结构与函数。 示例程序如下: //来源 公众号【编程珠玑】 源网站:https://www.yanbinghu.com #include<stdio.h> #include<sys/types.h> #include 来源:公众号【编程珠玑】 网站:http://www.yanbinghu.com/2019/07/21/64710.html 作者:守望 address is already in use 端口已被占用 关于TIME_WAIT状态,在《网络编程-再看TCP的四次挥手》中有详细的论述,本文不再赘述。 connect failed: No route to host 总结 本文列出了在进行网络编程中最常遇到的错误,但远不止此;除此之外,某种错误出现的场景也并没有完全指出,但对于分析常见问题基本足够。

    1.4K20发布于 2019-07-30
  • 来自专栏用户2442861的专栏

    高性能网络编程2----TCP消息的发送

    1、MSS与TCP的分片 由上一篇文中可知,TCP层是第4层传输层,第3层IP网络层、第2层数据链路层具备的约束条件同样对TCP层生效。下面来看看数据链路层中的一个概念:最大传输单元MTU。 图2 IP头部格式 可以看到,其指定IP包总长度的是一个16位(2字节)的字段,这意味一个IP包最大可以是65535字节。 2、发送方法返回成功后,数据一定发送到了TCP的另一端吗? 答案当然是否定的。解释这个问题前,先来看看TCP是如何保证可靠传输的。 (2)内核主要通过tcp_sendmsg方法来完成。 (3)(4)内核真正执行报文的发送,与send方法的调用并不是同步的。即,send方法返回成功了,也不一定把IP报文都发送到网络中了。 after(end_seq, tp->snd_una + tp->snd_wnd);   }   (2)慢启动和拥塞窗口 由于两台主机间的网络可能很复杂,通过广域网时,中间的路由器转发能力可能是瓶颈

    1.3K21发布于 2018-09-20
  • 来自专栏程序编程之旅

    【Cocos2d-x】Cocos2d-X网络编程-HttpRequestHttpClientHttpResponse

    Cocos2d-x封装了3个类来处理HTTP请求: HttpRequest,HttpClient和HttpResponse. 2.设置请求方式,Get、Post等。 使用Cocos2d封装的HttpRequest设置请求信息 HttpRequest: 是一种数据类型,它提供了一些方法用来定义或获取HTTP请求的参数, 常用方法包括下面几种: 设置请求连接 void setUrl(const char * url); 设置请求类型 void setRequestType(Type type); 这里的Type是Cocos2d-x定义的一个枚举类型 cocos2d中多处用到这一模型。

    1.2K20发布于 2021-01-21
  • 来自专栏抠抠空间

    网络编程

    三.网络基础 网络基础 1.一个程序如何在网络上找到另一个程序? 首先,程序必须要启动,其次,必须有这台机器的地址,我们都知道我们人的地址大概就是国家\省\市\区\街道\楼\门牌号这样字。 那么每一台联网的机器在网络上也有自己的地址,它的地址是怎么表示的呢? 套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。  还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程 = ('defg'.encode('utf-8'),101) s1 = struct.Struct('I3sf') s2 = struct.Struct('4sI') print(s1.size,s2

    1.9K60发布于 2018-04-12
领券