2.7 套接字编程
互联网应用程序使用的协议分为两种:
实现在协议标准中的协议
专用的网络应用程序,使用的协议不公开
每一个进程可以拥有一至多个套接字,系统通过端口号(Port Number)标识套接字。
2.7.1 UDP套接字编程
客户端脚本:
from socket import *
# server_name为服务进程所在主机ip
server_name = 'hostname'
server_port = 12000
# SOCK_DGRAM 指明套接字使用UDP传输
client_socket = socket(AF_INET, SOCK_DGRAM)
message = 'keshuai'
client_socket.sendto(message, (server_name, server_port))
modified_message, server_address = client_socket.recvfrom(2048)
print modified_message
client_socket.close()
服务端脚本:
from socket import *
server_port = 12000
server_socket = socket(AF_INET, SOCK_DGRAM)
server_socket.bind(('', server_port))
print "The server is ready to receive"
while True:
message, client_address = server_socket.recvfrom(2048)
print "Recieve: %s" % message
modified_message = message.upper()
server_socket.sendto(modified_message, client_address)
2.7.2 TCP套接字编程
特殊的套接字实现TCP三次握手:
客户端脚本:
from socket import *
server_name = '172.23.83.57'
server_port = 12000
# SOCK_STREAM指明套接字使用TCP传输
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.connect((server_name, server_port))
message = 'keshuai'
client_socket.send(message)
modified_message = client_socket.recv(2048)
print modified_message
client_socket.close()
服务端脚本:
from socket import *
server_port = 12000
server_socket = socket(AF_INET, SOCK_STREAM)
server_socket.bind(('', server_port))
server_socket.listen(1)
print "The server is ready to receive"
while True:
connection_socket, client_address = server_socket.accept()
message = connection_socket.recv(2048)
print "Recieve: %s" % message
modified_message = message.upper()
connection_socket.send(modified_message)
connection_socket.close()
Last updated
Was this helpful?