python TCP/IP 服务器/客户端

来源:互联网 发布:琅琊榜骑兵进阶数据 编辑:程序博客网 时间:2024/06/05 00:49

具体的详解参考这篇文章

创建TCP服务器步骤伪代码:

ss = socket()           #创建服务器套接字ss.bind()               #套接字与地址绑定ss.listen()             #监听连接inf_loop:               #服务器循环    cs=ss.accept()      #接受客户端连接    comm_loop:        cs.recv()/cs.rend()  #通信(接收/发送)    cs.close()               #关闭客户端套接字s.close()                    #关闭服务器套接字(可选,一般不选)

创建TCP客户端步骤伪代码:

cs = sockct()           #创建客户端套接字cs.connect()            #尝试连接服务器comm_loop:    cs.send()/cs.recv() #对话服务器(发送/接收)cs.close()              #关闭客户端套接字

Python源代码:

TCP服务器代码#!/home/lzg/python      TCP_server   pythonfrom socket import*from time import ctimehost=''port=21567bufsiz=1024ADDR=(host,port);tcpSerSock=socket(AF_INET,SOCK_STREAM)tcpSerSock.bind(ADDR)tcpSerSock.listen(5)while True:        print 'Waiting for connection...'        tcpCliSock,addr =tcpSerSock.accept()        print '...connection from :',addr        while True:                data=tcpCliSock.recv(bufsiz)                if not data:                        break                tcpCliSock.send('[%s] %s' %(ctime(),data))        tcpCliSock.close()TCP客户端代码:#!/home/lzg/python python TCP-clientfrom socket import *host='localhost'port=21567bufsiz=1024ADDR=(host,port)tcpCliSock=socket(AF_INET,SOCK_STREAM)tcpCliSock.connect(ADDR)while True:        data=raw_input('> ')        if not data:                break        tcpCliSock.send(data)        data=tcpCliSock.recv(bufsiz)        if not data:                break        print datatcpCliSock.close()

这里写图片描述

新学到的python知识点:
1. raw_input()函数:

    输入函数,函数参数会作为字符串在输出端直接输出并等待输入,输入的数据会以字符串的方式作为返回值返回。    延伸:input()函数时通过raw_input()函数实现,主要区别在于输入的时候input需要输入的字符串带双引号。

2. accept()函数的返回值竟然是复合的,而且可以这么写:

tcpCliSock ,addr = tcpSerSock.accept();

accept返回两个值,一个是套接字对象,一个是accept所接收的客户端的网络地址

本着学习Python的目的看的Python核心编程,虽然跨度大,但对自己还是蛮有信心的!