python网络编程之UDP编程,套接字参数详解/day16

UDP编程

服务器端代码如下:

import socket                                  #导入socket包

server = socket.socket(type=socket.SOCK_DGRAM)  #用socket方法来创建一个服务器socket对象
server.bind(("10.x.x.x",9000))              #监听本机"900x"端口,绑定成一个元组(本机地址,监听本机端口)
while True:
    msg,addr=server.recvfrom(1024)  #接收客户端发来的信息
    msg=msg.decode("utf-8")        #接收客户端发来的信息,并且编码
    print("对方说:")
    print(msg)                       #对方的话
    content = input("我说:")
    content=content.encode("utf-8") #对我的话进行编码
    server.sendto(content, addr)     #把服务器所说的话发送给对方,客户端发送信息
server.close()                                  #关闭套接字 

客户端代码如下:

import socket                                 #导入socket包
client=socket.socket(type=socket.SOCK_DGRAM)   #用socket方法来创建一个客户端socket对象
ip_port=('10.x.x.x',9000)                  #服务器地址和端口

while True:
    content = input("我说:")          #我说的话写在这里
    content = content.encode("utf-8")  #由于不能直接传递字符串,所以需要将字符串编码
    client.sendto(content, ip_port)     # 向服务器发送一条信息
    msg, addr = client.recvfrom(1024)   # 接收从服务器返回的一条信息
    msg = msg.decode("utf-8")           #对信息进行解码
    print("对方说:")
    print(msg)                           # 输出对方说的话
client.close()



套接字参数详解:

socket.socket(family=AF_INET,type=SOCK_STREAM)

family

地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。
(AF_UNIX 域实际上是使用本地 socket 文件来通信)

type

套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。
SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 
SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88404719