首页 > 编程知识 正文

通信原理单极性归零实验报告,南邮通信原理实验报告

时间:2023-05-06 06:01:19 阅读:17506 作者:1653

只要涉及网络服务,套接字和套接字编程就必不可少。 介绍python socket通信的基本原理。

1 .插座

套接字(也称为套接字)用于描述IP地址和端口,是通信链的句柄。 通常,APP应用程序通过“套接字”向网络发出请求或响应网络请求。 可以举出中国移动和中国电信等电话支持,当然也可以看下面的照片来说明形象。

套接字起源于Unix,但Unix/Linux的一个基本哲学是,它可以在所有文件中操作,即“打开—关闭读写write/read—的关闭”模式。 套接字是此模式的实现之一,套接字是一个特殊文件,一些套接字函数是其操作(读/写、开/关I/o )。

请看到以下图标并形象地进行说明。

2 .套接字编程

(1)套接字服务器的编程

主要包括以下步骤:

1 .打开插座

2 .绑定到地址和端口

3 .拦截传入的连接

4 .接受连接

5 .数据读写

)2)套接字客户端编程

主要包括以下步骤:

1 .打开插座

2 .连接地址和端口

3 .数据读写

3 .插座类型

套接字可以按类型分为以下几类: 插座类型适用范围的说明

socket.AF_Unix只能用于单个UNIX系统进程间通信,不能在不同主机之间通信

socket.AF_INET服务器之间的网络通信现在常用的就是这样

socket.AF_INET6IPv6很少使用,因为IPv6不流行

上面是插座的类型,细分后也有插座的数据包类型。 该图如下所示。

第一个和第二个,也就是for TCP和for UDP的类型很常用。 当然,socket.SOCK_RAW也需要注意。 因为可以构建IP头部,所以遵循这一思路,可以一起伪造不同源IP地址的数据包,对一些中小企业的服务器进行Dos攻击。

4 .套接字函数

对套接字执行“I/o读写、打开、关闭”等操作的函数就是套接字函数。 请参照下图。

只记住常用的东西就行了。 也就是说,通常是在服务器端和客户端端编程使用的。 请参考以下示例。

5 .插座示例

在这里,写一个单线程的非交互式套接字,在本地实现通信就好了。

服务器端:导入importsocket#套接字类

HOST=‘‘#”定义了监听本地地址的端口(对于多个IP地址),这里意味着监听所有端口,也可以写作0.0.0.0

port=50007#服务器端的开放服务端口

s=Socket.socket(socket.af_inet,socket.SOCK_STREAM ) #选择socket类型和socket数据包类型

s.bind () PORT,PORT ) #绑定IP地址和端口

s.listen(1) #定义拦截数并开始拦截(实际没有效果) ) )

conn,addr=s.accept(#定义实例,accept ) )函数的返回值可以看到上述套接字函数的说明

print‘Connectedby‘,addr

while1:

接受DTA=Conn.recv(1024 ) #套接字的数据

如果没有ifnotdata:break#数据接收,请断开连接

print‘revc :’、data#发送接收到的数据

Conn.sendall(data ) #发送接收的数据

Conn.close(#关闭套接字

客户端: importsocket

HOST=‘192.168.1.13‘#定义目标主机名

PORT=50007#定义目标主机的开放服务端口号

s=Socket.socket(socket.af_inet,socket.SOCK_STREAM ) #选择socket类型和socket数据包类型

s.connect () PORT,PORT )连接到目标主机的套接字

S.Sendall(Hello,world! “) #发送数据

data=s.recv(1024 )接收数据

s.close(#关闭插座

打印‘已接收’,repr (数据) )。

演示:

步骤1 :在服务器端运行服务器端程序[ email protected ] :/mnt/hgfs/python/day5$ pythonserver4. py

===光标正在此等待

步骤2 :在客户端运行客户端程序[ email protected ] :/mnt/hgfs/python/day5$ python client4. py

接收的‘hello,world!===接收从服务端返回的数据

步骤在服务器端观察现象[ email protected ] :/mnt/hgfs/python/day5$ pythonserver4. py

连接by (‘192.168.1.13’,52641 )==客户端已连接,52641是客户端的随机端口号

revc:Hello,world!===从客户端接收数据

译文: 3358 XP leaf.blog.51cto.com/9315560/1700032

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。