使用自带的socket通信模块利用tcp进行网络通信
发送数据
# 导入socket模块
import socket
def main():
# 创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# 键盘录入ip地址
deta_ip = input("请输入对方的ip:")
deta_port = int(input("请输入对方port:"))
n = ""
while True:
# 从键盘录入
sed_data = input("请输入你要发送的数据:")
if sed_data == "exit":
break
elif sed_data == n:
print("请输入正确的字符")
continue
# 使用套接字收发数据
# udp_socket.sendto("你好啊",对方的IP以及port)
# udp_socket.sendto(b"你好", ("192.168.16.100", 80081))
# udp_socket.sendto(sed_data.encode("utf-8"), ("192.168.16.100", 8081))
udp_socket.sendto(sed_data.encode("gbk"), (deta_ip, deta_port))
except socket.gaierror:
print('错误!请输入正确的IP地址!')
except ValueError:
print('错误!请输入正确的port!')
except Exception as result:
print("%s 未知错误" % result)
# 关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()
接受数据
import socket
def main():
# 1、创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print("正在接收数据...")
# 2、绑定一个本地的信息
udp_bind = ('192.168.16.104', 8081)
udp_socket.bind(udp_bind)
while True:
# 3、接收数据
udp_recvfrom = udp_socket.recvfrom(1024)
# 4、打印接收到的数据
# udp_recvfrom这个变量中存储的是一个元组(接收到的数据,(发送方的ip,port))
udp_msg = udp_recvfrom[0] # 存储接收的数据
udp_addr = udp_recvfrom[1] # 存储发送方的地址信息
print("%s:%s 对方的ip和port:%s" %('某某接收到古文龙的信息',udp_msg.decode("UTF-8"),str(udp_addr)))
# print(udp_recvfrom)
# 5、关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()