TCP客户端的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
TCP服务器端的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
TCP客户端代码:
import socket
def main():
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#链接tcp服务端
sev_ip=input('输入服务端ip')
sev_port=input('输入服务端port')
tcp_socket.connect((sev_ip,int(sev_port)))
#发送数据
send_mes=input('输入发送信息:')
tcp_socket.send(send_mes.encode('utf-8'))
tcp_socket.close()
if __name__ == '__main__':
main()
服务器端代码及分析:
import socket
def main():
#建立套接字
tcp_sever=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定ip端口号
tcp_sever.bind(('127.0.0.1',7708))
#建立监听
tcp_sever.listen()
#重点:!将生成新的套接字和客户端一对一
new_tcp_socket,client_adr=tcp_sever.accept()
print(client_adr)
rec_data=new_tcp_socket.recv(1024) #新的套接字发送接受
send_data=input('输入发送信息:')
new_tcp_socket.send(send_data.encode('utf-8'))
print(rec_data.decode('gbk'))
if __name__ == '__main__':
main()
测试一下:一个服务端和多个客户端
import socket
def main():
'''
为多个客户服务和为一个客户服务多次
:return:
'''
#建立套接字
tcp_sever=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定ip端口号
tcp_sever.bind(('127.0.0.1',7708))
#建立监听
tcp_sever.listen()
while True: #实现多个客户的服务
print('等待一个新客户的到来、、、、')
new_tcp_socket,client_adr=tcp_sever.accept()
print('新客户是:',client_adr)
#接受客户端发来的信息
while True: #实现一个用户服务多次
rec_data=new_tcp_socket.recv(1024)
if rec_data: #当不为空时显示
print('客户端发来的信息:',rec_data.decode('gbk'))
#向客户端发送信息
# send_data = input('发送到客户端的信息:')
# new_tcp_socket.send(send_data.encode('utf-8'))
else:
break
#结束当前客户端
new_tcp_socket.close()
tcp_sever.close() #关闭开始的套接字
if __name__ == '__main__':
main()
实现的是一次服务一个