实验环境:python2
一、TCP编程
1.建立TCP服务器
①创建TCPServer.py文件
②编写服务器代码
1)创建socket对象,调用socket构造函数
2)绑定ip端口(IP号和端口号)
3)设置最大连接数(准备套接字,以便接受连接请求)
4)使用socket的accept()方法等待客户请求一个链接
5)获取客户请求数据
6)关闭连接
代码如下:
#TCPServer.py #!/usr/bin/env python #from socket import * import socket #开启ip和端口 ip_port = ('127.0.0.1',9999) #1.生成一个句柄(创建socket对象,调用socket构造函数) sk = socket.socket() #2.绑定ip端口(ip和端口号) sk.bind(ip_port) #3.最多连接数(准备套接字,以便接受连接请求) sk.listen(5) #开启死循环 print ('server waiting...') #等待链接,阻塞,直到渠道链接 conn打开一个新的对象 #专门给当前链接的客户端 addr是ip地址 #4.服务器套接字通过socket的accept()方法等待客户请求一个链接 conn,addr = sk.accept() #5.获取客户端请求数据 print('successful link,the client address:') print(addr) while True: client_data = conn.recv(1024) #打印对方的数据 print ('receive Clinet Data-> '+client_data) if client_data=='q': break #如果lient_data为空,则跳出循环 #向对方发送数据 conn.send(bytes('client,I\'m server')) #关闭链接 conn.close() sk.close()
2.建立TCP客户端
①创建TCPclient.py文件
②编写客户端代码
1)连接服务端ip和端口
2)生成套接字
3)请求连接服务端
4)发送数据,接受数据
5)关闭连接
#TCPClient.py import socket #连接服务端ip和端口 ip_port = ('127.0.0.1',9999) #生成一个句柄 sk = socket.socket() #请求连接服务端 sk.connect(ip_port) while True: msg = raw_input('Please Input Message:\n') #发送数据 sk.sendall((msg)) if msg=='q': break #如果msg为空,则跳出循环 #接收数据 server_reply = sk.recv(1024) if not server_reply: break #打印接收到的数据 print (str(server_reply)) #关闭连接 sk.close()
3.实现服务端-客户端通讯
①运行TCPServer.py
②运行TCPclient.py
③由客户端向服务端发送消息
运行截图如下:
二、UDP编程
1.建立UDP服务器
①创建UDPServer.py文件
②编写服务器代码
1)创建socket对象,调用socket()构造函数UDP需要加参数
2)绑定IP和端口号
3)通讯阶段
4)关闭连接
代码如下:
#UDPServer.py #!/usr/bin/env python from socket import * HOST = 'localhost' PORT = 9993 s = socket(AF_INET,SOCK_DGRAM) s.bind((HOST,PORT)) print '...waiting for message..' while True: data,address = s.recvfrom(1024) print address,data s.sendto('this is the UDP server',address) s.close()
2.建立UDP客户端
①创建UDPClient.py文件
②编写UDP客户端代码
1)创建一个socket以连接服务器
2)使用socket的connect()方法连接服务器
3)通过sendto()和recvfrom()方法通信
4)关闭连接
代码如下:
#UDPClient.py from socket import * HOST='localhost' PORT=9993 address=(HOST,PORT) s = socket(AF_INET,SOCK_DGRAM) while True: message = raw_input('send message:>>') s.sendto(message,address) data = s.recvfrom(1024) print data s.close()
3.运行客户端-服务端实现通讯
三、结束语
至此使用python-socket编程的TCP和UDP编程已演示结束。
谢谢!