TCP与UDP套接字Python编程

news/2024/5/18 13:38:57 标签: tcp/ip, udp, python

一、套接字

套接字(socket)是同一台主机内应用层和运输层的接口。
在这里插入图片描述
进程可类比为一个房子,套接字为该进程的门,当一个进程想向另一台主机发送报文时,该进程把报文推出门(套接字),通过运输层的运输到另一台主机的目的进程,一旦报文到达目的主机,它通过接收进程的门(套接字)传递,接收进程开始处理报文。
可以看到,应用程序开发者在套接字应用层一侧可以控制所有,但是几乎无法控制运输层。

二、UDP编程

1、UDPServer

python">from socket import *
serverPort = 12000    #服务端的端口号
serverSocket = socket(AF_INET,SOCK_DGRAM)  #创建一个套接字
serverSocket.bind(('',serverPort))         #绑定地址(host,port)到套接字
print("The server is ready to receive")    #提示服务器准备就绪
while True: #死循环,True为布尔值,值为1
    message,clientAddress = serverSocket.recvfrom(2048) #接收UDP数据
    modifiedMessage = message.decode().upper() #解码,转换 upper()方法将字符串小写转换为大写
    serverSocket.sendto(modifiedMessage.encode(), clientAddress) #编码发送到客户端

2、UDPClient

python">from socket import *
serverName = '127.0.0.1'   #服务端的IP地址
serverPort = 12000            #服务端的端口号
clientSocket = socket(AF_INET,SOCK_DGRAM)  #创建一个套接字
message = input('Input lowercase sentence:')  #从键盘获取报文
clientSocket.sendto(message.encode(),(serverName,serverPort)) #字符串编码发送UDP数据到服务端
modifiedMessage,serverAddresss = clientSocket.recvfrom(2048) #接收UDP数据,返回值:(data,address)
print(modifiedMessage.decode()) #将数据解码并打印
clientSocket.close()  #关闭套接字

三、TCP编程

1、TCPServer

python">from socket import *
serverPort = 12000    #服务端的端口号
serverSocket = socket(AF_INET,SOCK_STREAM)  #创建一个套接字
serverSocket.bind(('',serverPort))         #绑定地址(host,port)到套接字
serverSocket.listen(1)  #请求连接的最大数
print("The server is ready to receive")    #提示服务器准备就绪
while True:
    connectSocket,addr = serverSocket.accept() #创建连接套接字
    Message = connectSocket.recv(1024).decode() #解码
    capitalizedMessage = Message.upper()     #转化
    connectSocket.send(capitalizedMessage.encode()) #编码发送
    connectSocket.close()  #关闭连接套接字

2、TCPClient

python">from socket import *
serverName = '127.0.0.1'   #服务端的IP地址
serverPort = 12000            #服务端的端口号
clientSocket = socket(AF_INET,SOCK_STREAM)  #创建一个套接字
clientSocket.connect((serverName,serverPort)) #建立TCP连接,进行三次握手
message = input('Input Message:')  #从键盘获取报文
clientSocket.send(message.encode()) #字符串转化为UTF-8编码,并发送TCP数据到服务端,不需要附加目的地址和端口
modifiedMessage = clientSocket.recv(1024)  #接收TCP数据,返回值:(data)
print('From Server:',modifiedMessage.decode())  #解码输出
clientSocket.close()  #关闭连接套接字

http://www.niftyadmin.cn/n/1101456.html

相关文章

Web服务器python编程

一、Web服务器代码 * 功能:Web浏览器访问 Web服务器,获取 index.html 文件 * 目的:1、当一个客户(浏览器)联系时创建一个套接字 * 2、从这个连接接收 HTTP 请求 * 3、解释该请求以确定所请求的特定文件 * …

Android大厂面试题锦集附答案(BAT TMD JD 小米)

1.android事件分发机制,请详细说下整个流程2.android view绘制机制和加载过程,请详细说下整个流程1.ViewRootImpl会调用performTraversals(),其内部会调用performMeasure()、performLayout、performDraw()。2.performMeasure()会调用最外层的ViewGroup的…

小程序右上角转发分享web-view页面(备份前端网)

如果出现开发版小程序已过期&#xff0c;请在开发者工具重新扫码的话&#xff1b;让那人重新扫一下开发工具预览&#xff01; <web-view src"{{url}}"></web-view> /*** 生命周期函数--监听页面加载*/onLoad: function (options) {console.log(options)…

php网络编程实例

php网络编程实例 一、总结 一句话总结&#xff1a; socket_create()&#xff1a;创建socket socket_bind()&#xff1a;绑定IP和端口 socket_listen()&#xff1a;监听客户端信息 <?php //echo gethostbyname("www.baidu.com"); $host "111.13.100.92"…

怎样快速将文字转换成语音?这种操作很简单

我们在听讲座&#xff0c;开会的时候经常会记一些笔记&#xff0c;但是我们并不是打字员&#xff0c;很多时候是跟不上说话速度的&#xff1f;这时候我们就可以将其录下来在进行整理&#xff0c;下面是小编分享的方法&#xff0c;希望可以帮助到大家&#xff01;  步骤一&…

自定义控件的一些总结

为什么80%的码农都做不了架构师&#xff1f;>>> 自定义控件功能&#xff1a;隐藏自定义控件中TextBox控件的边框&#xff0c;在 textBox 控件下面划一条直线。并可以通过属性控制是否只可以输入正整数 注意&#xff1a; 1.属性的特性描述既可以填也可以不填&#…

理清gcc、libc、libstdc++的关系

当你在linux下写C/C代码的时候&#xff0c;是不是会遇到许多编译链接的问题&#xff1f; 时不时报个glibc,gcc&#xff0c;g等相关的错误&#xff1f; 很多时候都无从下手&#xff0c;而且比较混乱。 这也是编译链接过程中经常出现的问题。 这篇文章不是去介绍如何编译链接&…

寒冬下2年android的搞笑求职历程

背景楼主双非本科&#xff0c;17年毕业&#xff0c;学历背景一般&#xff0c;由于个人原因吧&#xff0c;不得不从杭州撤离了&#xff0c;直接从公司裸辞了&#xff0c;处理好家中的事情后&#xff0c;本着换个环境的想法&#xff0c;直接奔向深圳了&#xff0c;也是开启了又一…