DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

最简单的Socket通信之Python版


功能很简单,首先运行Server,当启动Client并向Server发送‘hi’时, Server回答一句问候语,当Client发送其他信息时,Server回答'bye'并关闭连接、退出。

Server端:

import sys, socket 
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
serv.bind(('localhost',7788)) 
serv.listen(2) 
while True: 
    connection,address = serv.accept() 
    try: 
        connection.settimeout(35) 
        buf = connection.recv(1024) 
        if buf=='hi': 
            connection.send('welcome to server!') 
        else: 
            connection.send('bye!') 
            connection.close() 
            sys.exit(0) 
    except socket.timeout: 
        print 'time out!'

Client端:

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.connect(('localhost', 7788)) 
import time 
time.sleep(2) 
sock.send('hi') 
print sock.recv(1024) 
sock.close()

注意Server和Client都在本机运行时,要在不同的软件上运行, 例如Server用WingIDE跑,Client用PyScripter跑。

Server端通信的基本过程是:建立socke对象->bind->listen->connection周期->close, 其中connection周期是: 首先用socket server的accept方法生成一个新的socket对象(习惯上成为connection), 然后用connection的send/rec方法发送/接收数据, 最后调用connection的close方法关闭连接。 由于服务器经常要以“服务”的形式不断处理客户连接, 因此connection周期通常要放在一个循环体里。

Client端通信的基本过程是:建立socke对象->connect->send/recv->close。



Published

Mar 16, 2011

Last Updated

Mar 16, 2011

Category

Tech

Tags

  • Python 136
  • Socket 4
  • 通信 4

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor