1.UDP套接字编程
客户端 UDPClient.py
# coding=utf-8
from socket import *
serverName = '127.0.0.1'
serverPort = 12000
# AF_INET : IPV4 , SOCK_DGRAM: 使用UDP套接字
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = raw_input('输出小写字符序列:')
clientSocket.sendto(message, (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
服务端 UDPServer.py
# coding=utf-8
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print "服务器准备就绪..."
while True:
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
2.TCP套接字编程
TCPClient.py
# coding=utf-8
from socket import *
serverName = '127.0.0.1'
serverPost = 12000
clientSocket = socket(AF_INET,SOCK_STREAM)
clientSocket.connect((serverName,serverPost))
# 执行三次握手,建立TCP连接
sentence = raw_input("输入小写字符序列:")
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(2048)
print modifiedSentence
clientSocket.close()
TCPServer.py
# coding=utf-8
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('127.0.0.1', serverPort))
serverSocket.listen(1)
print "服务器准备就绪..."
while True:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
3.自己写web服务器
WebServer.py
# coding=utf-8
# import socket module
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
# Prepare a sever socket
serverSocket.bind(('127.0.0.1', 6789)) # 将TCP欢迎套接字绑定到指定端口
serverSocket.listen(1) # 最大连接数为1
while True:
# Establish the connection
print('Ready to serve...')
connectionSocket, addr = serverSocket.accept() # 接收到客户连接请求后,建立新的TCP连接套接字
try:
message = connectionSocket.recv(1024) # 获取客户发送的报文
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read();
# Send one HTTP header line into socket
header = ' HTTP/1.1 200 OK\nConnection: close\nContent-Type: text/html\nContent-Length: %d\n\n' % (
len(outputdata))
connectionSocket.send(header.encode())
# Send the content of the requested file to the client
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i].encode())
connectionSocket.close()
except IOError:
# Send response message for file not found
header = ' HTTP/1.1 404 Found'
connectionSocket.send(header.encode())
# Close client socket
connectionSocket.close()
serverSocket.close()
hello.html
<head>Hello world!</head>