python网络编程之TCP实现

来源:互联网 发布:男生健身模特身材知乎 编辑:程序博客网 时间:2024/06/06 05:13

一、原理

 tcp是面向连接,服务器的过程如下:

    1.创建一个socket(socket的类型,socket的协议)
    2.绑定(bind)一个端口,使客户端连接、
    3.设置监听队列(listen)的大小
    4.进入无限循环,使用accpet()接收客户端请求

    5.通过send/recv()对socket进行读写操作

  客户端的过程如下:
    1.创建一个socket(socket的类型,socket的协议)
    2.用connect连接远程端口、
    3.通过send/recv()对socket进行读写操作


二、代码实现如下:

   1.服务器端:

import socketfrom time import ctimedef tcpServer():    address=("127.0.0.1",8080)    #初始化socket    tcpsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)    #绑定端口地址    tcpsock.bind(address)    #设置监听    tcpsock.listen(5)    while True:        print "wait a client connect..."        #接受客户端连接        con,addr=tcpsock.accept()        while True:            try:                con.settimeout(20)                #接收数据                buf =con.recv(1024)               #  con.send('[%s]%s' %(ctime(),buf))                if buf=="1":                    con.send("1")                elif buf=="2":                    con.send("2")                elif buf=="3":                    con.send("3")                    break                else:                    con.send("unknow command")            except socket.timeout:                print "time out"        con.close()        print "a clinet exit..."if __name__=="__main__":    tcpServer() 

  2.客户端

def tcpClient():    address=("127.0.0.1",8080)    #初始化socket    tcpClientsock =socket.socket(socket.AF_INET,socket.SOCK_STREAM)    #建立连接    tcpClientsock.connect(address)    while True:        #输入口令        data=raw_input("input the command:")        #发送请求        tcpClientsock.send(data)        print tcpClientsock.recv(1024)        if data==3:            break    tcpClientsock.close() if __name__=="__main__":    tcpClient()



0 0
原创粉丝点击