一、server
# coding=utf-8
from socket import *
#hostIP
myhost = ''
#端口
myport = 10000
sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.bind((myhost, myport))
sockobj.listen(128)
while True:
connection, address = sockobj.accept()
print "col:", address
while True:
data = connection.recv(1024)
print data
if not data:
break
connection.send("echo" + data)
connection.close()
二,server 运用python原始封装socketserver
# coding=utf-8
from SocketServer import BaseRequestHandler,TCPServer
import traceback
class myrequest(BaseRequestHandler):
def handle(self):
while True:
try:
data=self.request.recv(1024).strip()
print data
print "receive from (%r):%r"%(self.client_address,data)
self.request.sendall(data)
except Exception, e:
traceback.print_exc()
break
#判断是否是引用
if __name__=="__main__":
host=""
port=10007
add=(host,port)
server=TCPServer(add,myrequest)
server.serve_forever()
三、多线程TCPserver
# coding=utf-8
from SocketServer import ThreadingTCPServer, StreamRequestHandler
import traceback
class myStreamRequestHandler(StreamRequestHandler):
#重写的方法
def handle(self):
while True:
try:
#去除左右空格的接收数据
data = self.request.recv(1024).strip()
print "receive from (%r):%r" % (self.client_address, data)
#发送给客户端
self.request.sendall(data)
except Exception, e:
traceback.print_exc()
break
#判断是否是引用
if __name__ == "__main__":
#主机地址,默认为本机地址
host = ""
port = 8888
#构建主机,端口元组
addr = (host, port)
server = ThreadingTCPServer(addr, myStreamRequestHandler)
server.serve_forever()
四、客户端(client)
#coding=utf-8
import socket
#服务端地址
host="localhost"
#端口
port=11112
#构建地址元组
addr=(host,port)
#网络类型 TCP ,socket类型
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(addr)
while True:
s.sendall("hello world")
data=s.recv(1024)
print data
if not data:
break
s.close()