UDP protocol to send data
import socket
#1、创建套接字
#2、使用套接字接收 /发送数据
#3、关闭套接字
def main():
# 创建udp socket 套接字 socket.AF_INET(IPV4) socket.SOCK_DGRAM(UDP协议)
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
send_data = "nihao"
send_data = send_data.encode('gbk')
udp_socket.sendto(send_data,('192.168.0.162',8080))
udp_socket.close()
if__name__ == '__main__'
main()
UDP receive data
#1、创建套接字
#2、绑定本地信息(IP 和 端口)
#3、接收数据
#4、打印数据
#5、关闭套接字
import socket
def main():
# 创建udp socket 套接字 socket.AF_INET(IPV4) socket.SOCK_DGRAM(UDP协议)
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定ip 和端口
bin_addr = ('',7789)
udp_socket.bin(bind_addr) # 括号内为元组
recv_data = udp_socket.recfrom(1024)
print(recv_data)
if__name__ == '__main__'
main()
udp chat (send + receive)
import socket
def send_data(udp_socket):
send_data = input("输入发送内容")
dest_ip = input("发送IP")
dest_port = input("发送端口")
send_data = udp_socket.sendto(send_data.encode('gbk'),(dest_ip,dest_port))
print(recv_data)
def recv_data(udp_socket):
recv_data = udp_socket.recfrom(1024)
print(recv_data)
def main():
# 创建udp socket 套接字 socket.AF_INET(IPV4) socket.SOCK_DGRAM(UDP协议)
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定ip 和端口
bin_addr = ('',7789)
udp_socket.bin(bind_addr) # 括号内为元组
while True:
send_data(udp_socket)
recv_data(udp_socket)
udp_socket.close()
if__name__ == '__main__'
main()
TCP client
#1、socket 创建套接字
#2、连接服务器
#3、接收数据(设置接收最大字节 )
#4、关闭套接字
import socket
def main():
tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_ip = input("server ip")
server_port = input("server port")
# 连接服务器
tcp_client.connect((server_ip,server_port))
# 向客户端发送数据
send_data = input("发送数据")
tcp_client.send(send_data.encode())
#接收服务器数据
recv_data = tcp_client.recv(1024)
print(recv_data)
if__name__ == '__main__'
main()
TCP server
#1、socket 创建套接字
#2、bin绑定IP和portr
#3、listen 使用套接字变成可别动连接
#4、accept 等待客户端连接
#5、recv/send 接收发送数据
import socket
def main():
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定信息
tcp_server.bin(("192.168.0.168",7989))
# 主动变被动
tcp_server.listen(128) # 最大连接数
# 有客户端连接时,服务端生成新的socket
new_client_socket,client_addr = tcp_server.accept()
# 用新的socket 进行接收客户端数据
recv_data = new_client_socket.recv(1024)
print(recv_data)
#用新的socket发送数据
new_client_socket.send("send_data",encode('gbk'))
#关闭套接字(新、旧)
new_client_socket.close()
tcp_server.colse()
if__name__ == '__main__'
main()
The TCP server serves multiple clients
(multiple connections, but only one at the same time, and the next one when disconnected)
import socket
def main():
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定信息
tcp_server.bin(("192.168.0.168",7989))
while True: # 为多个客户端服务
# 主动变被动
tcp_server.listen(128) # 最大连接数
# 有客户端连接时,服务端生成新的socket
new_client_socket,client_addr = tcp_server.accept()
while True: # 可接收同一客户端的多条数据
# 用新的socket 进行接收客户端数据
recv_data = new_client_socket.recv(1024)
print(recv_data)
if recv_data.decode('gbk'):
#用新的socket发送数据
new_client_socket.send("send_data",encode('gbk'))
else:
break
#关闭套接字(新、旧)
new_client_socket.close()
tcp_server.colse()
if__name__ == '__main__'
main()