Python中UDP/TCP通讯简单案例

python使用udp协议要通过socket技术:

   1.引包 

    2.创建流对象(ipv4, udp)

     3.发送(二进制字符串, 元组ip和端口

    4.关闭流对象

socket

译为:套接字/流对象

网络上各种各样的服务大多都是基于 Socket 来完成通信的例如我们每天浏览网页、QQ 聊天、收发 email 等等

Python中:UDP-socke通讯:

创建一个基于udp的网络程序流程很简单,具体步骤如下:

1、创建客户端套接字

2、发送/接收数据

3、关闭套接字

例子:

server端:001_udp_server.py

import socket

#    socket.AF_INET:表示IVP4;socket.SOCK_DGRAM:表示UDP协议

udp_server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

udp_server.bind(('127.0.0.1',8849))#  绑定端口,接受这个端口的消息

while True:

data,addr = udp_server.recvfrom(1024)

print('来自',addr,"的消息",data)

client端:001_udp_client.py

import socket

#   创建对象

udp_client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#   循环接受客户端的键盘输入

while True:

data = input("请输入要发送的数据:")

#   发数据

udp_client.sendto(data.encode('utf-8'),('127.0.0.1',8849))

#   收消息

# print(udp_client.recv(1024).decode('utf-8'))

# udp_client.close()

以上代码可以实现UDP通讯,客户端发送数据,服务端反馈,运行如下:

客户端:

服务端:

 

Python中:TCP-socke通讯:

Tcp通讯与udp通讯略有不同,原因是由于udptcp底层通讯的原理不同;

Udp就好比发短信,客户端发送数据后,我不需要知道服务端是否接收成功;

Tcp就好比打电话,客户端发送数据后,要等待服务端的反馈,反馈成功连接后方可通讯;

代码如下:

server端:001_tcp_server.py

import socket

"""

作为服务端:

    1/绑定端口供客户端连接

    2/因为是TCP需要用listen()方法,限定连接客户端的数量

    3/调用accpt()方法,分配新的socket给客户端1进行通讯   

socket1,addr = tcp_server.accept()  # 返回一个连接(会话),和一个地址(IP,PORT)

    4/循环接收数据

    5/输出,并调用send方法对客户端进行反馈

"""

#        socket.AF_INET:表示IPV4;socket.SOCK_STREAM:表示TCP

tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#	绑定端口,供客户端连接

tcp_server.bind(('127.0.0.1',8848))

#	设置可连接客户端上限

tcp_server.listen(3)

#	接收客户端访问,分配会话

socket1,addr = tcp_server.accept()

while True:

#	调用recv()方法接收数据1024为缓存,这个值可自由写

    data = socket1.recv(1024)

#	打印客户端发来的信息

    print("收到",addr,"的信息",data.decode('utf-8'))

#	给客户端发送反馈数据

    send_data = (data.decode('utf-8')).encode('utf-8')

    socket1.send(send_data)

Client端:001_tcp_client.py

import socket

"""

作为客户端进行发送数据

    1/因为是TCP需要在创建对象之后调用connet(IP,PORT)方法进行与服务端的通讯

    2/循环提示输入的数据信息

    3/调用send()方法进行数据发送

    4/调用rcve()方法进行数据的接受

    5/输出

"""

tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#	调用connect()方法进行与服务端的连接

tcp_client.connect(('127.0.0.1',8848))

print("连接成功")

while True:

#	发送反馈的信息

    date = input("输入要发送的数据:")

    tcp_client.send(date.encode('utf-8'))

#	接收服务端发送的数据,并打印

    data_recv = tcp_client.recv(1024)

    print(data_recv.decode('utf-8'))

运行如下:


客户端:

 

服务端:


猜你喜欢

转载自blog.csdn.net/guo_cw/article/details/80642754