博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http://www.liaoxuefeng.com/ python 网络编程

Posted on 2015-12-07 14:34  bw_0927  阅读(161)  评论(0)    收藏  举报

TCP编程

 

#!/usr/bin/python
import socket
import threading
import time

s = socket.socket(socket.AF_INET, sock.SOCK_STREAM)
s.bind(('127.0.0.1', 9999))
s.listen(5)
print('waiting for connection...')

while True:
    sock, addr = s.accept()
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

def tcplink(sock, addr):
    print('Accept new connection from %s:%s..' % addr)
    sock.send(b'welcome!')
    while True:
        data = sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8') == 'exit':
            break
        sock.send(('hello, %s' %data).encode('utf-8'))
    sock.close()
    print('connection from %s:%s' % addr)

  

 

UDP编程

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('127.0.0.1', 9999))
print('bind upd on 9999...')
while True:
    data, addr = s.recvfrom(1024)
    print('received from %s:%s...' % addr)
    s.sendto(b'hello, %s.' % data, addr)

  recvfrom()方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用sendto()就可以把数据用UDP发给客户端。