python下的socket网络编程

一、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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值