socket网络编程
服务器端:
我们使用 socket 模块的 socket 函数来创建一个 socket 对象。socket 对象可以通过调用其他函数来设置一个 socket 服务。
现在我们可以通过调用 bind(hostname, port) 函数来指定服务的 port(端口)。
接着,我们调用 socket 对象的 accept 方法。该方法等待客户端的连接,并返回 connection 对象,表示已连接到客户端。
完整代码如下:
#!/usr/bin/python # coding=utf-8 import sys import socket BUF_SIZE = 1024 server_addr = ('127.0.0.1',8888) try: server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error,msg: print "Creating Socket Failure. Error Code:" + str(msg[0]) + "Message:" + msg[1] sys.exit() print "Socket Created!" server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #设置地址复用 try: server.bind(server_addr) except socket.error,msg: print "Binding Failure. Error Code:" + str(msg[0]) + " Message:" + msg[1] sys.exit() print "Socket Bind!" server.listen(5) print "Socket listening " while True: client,client_addr = server.accept() print "Connected by", client_addr while True: sendMsg = client.recv(BUF_SIZE) client.sendall(sendMsg) server.close()
客户端:
接下来我们写一个简单的客户端实例连接到以上创建的服务。端口号为 12345。
socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端后期数据,记住,操作完成后需要关闭连接。
完整代码如下:
import sys import socket BUF_SIZE = 1024 server_addr = ('127.0.0.1',8888) try: client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error,msg: print "Creating socket Failure. Error Code :"+str(msg[0]) + "Message:" + msg[1] sys.exit() try: client.connect(server_addr) except socket.error,msg: print "Connect server Failure. Error Code:" + str(msg[0]) sys.exit() while True: data = raw_input("Please input send your message >") if not data: print "input can't empty,Please input again.." continue client.sendall(data) data = client.recv(BUF_SIZE) print data client.close()
Python Internet 模块
以下列出了 Python 网络编程的一些重要模块:
详解请看以下地址:
http://www.runoob.com/python/python-socket.html