十python开发之网络通信socket
Posted caibaofei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十python开发之网络通信socket相关的知识,希望对你有一定的参考价值。
一、客户端:
1、导入socket库
import socket
2、指定协议类型
client = socket.socket( ) #不填默认是socket.AF_INET,socket.SOCK_STREAM)
协议类型有:
socket 类型 | 描述 |
socket.AF_UNIX | 用于同一台机器上的进程通信(既本机通信) |
socket.AF_INET | 用于服务器与服务器之间的网络通信IPV4方式 |
socket.AF_INET6 | 基于IPV6方式的服务器与服务器之间的网络通信 |
socket.SOCK_STREAM | 基于TCP的流式socket通信 |
socket.SOCK_DGRAM | 基于UDP的数据报式socket通信 |
socket.SOCK_RAW | 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次SOCK_RAW也可以处理特殊的IPV4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头 |
socket.SOCK_SEQPACKET | 可靠的连续数据包服务 |
3、连接服务器
client.connect((‘www.baidu.com‘,80)) #使用元组tuple的方式传递两个参数
4、发送数据
client.send(b‘你好‘) #传送的数据必须为字节的方式
5、接收数据
data = client.recv(1024) #每次接收1K数据,data为接收到的数据
6、关闭socket
client.close()
二、服务器端:
1、选择协议:
server = socket.socket()
2、监听端口:
server.bind((‘localhost‘,80)) #使用元组tuple方式传参
server.listen(3) #监听端口,并设置最大等待连接数
3、等待客户端连接:
while True:
conn,addr = server.accept() #接收新连接
t = threading.Thread(target = tcplink,args=(conn,addr)) #创建新线程处理tcp连接
t.start()
4、与客户端数据交互
while True:
data = conn.recv(1024) #接收1kb数据
conn.send(data.upper()) #将客户端的数据小写变大写传回去
以上是关于十python开发之网络通信socket的主要内容,如果未能解决你的问题,请参考以下文章