码迷,mamicode.com
首页 > 编程语言 > 详细

python之TCP编程

时间:2015-05-11 14:15:20      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

客户端编程

#-*- coding:utf8 -*-
import socket

#创建一个socket
#AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET6。SOCK_STREAM指定使用面向流的TCP协议
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#建立连接
s.connect((www.sina.com.cn, 80))
#发送数据(http请求)
s.send(GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\n\r\n)
#接收数据
buffer = []
while True:
    #每次最多接受1k字节
    d = s.recv(1024)
    if d:
        buffer.append(d)
    else:
        break
data = ‘‘.join(buffer)
#关闭连接
s.close()
#分离http头和主体
header, html = data.split(\r\n\r\n, 1)
print header
#把接受到的数据写入文件
with open(D:\\sina.html, wb) as f:
    f.write(html)

 

服务器编程

服务器端

#-*- coding:utf8 -*-
import socket, threading, time

def tcplink(sock, addr):
    print Accept new connection from %s:%s... %addr
    sock.send(Welcome)
    while True:
        data = sock.recv(1024)
        time.sleep(1)
        if data == exit or not data:
            break
        sock.send(Hello, %s %data)
    sock.close()
    print Connection from %s %s %addr

#创建socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#监听端口
s.bind((127.0.0.1, 9999))
#传入的参数指定等待连接的最大数量
s.listen(5)
print Waiting for connection...
while True:
    #接受一个新连接
    sock, addr = s.accept()
    #创建新线程来处理TCP连接
    t = threading.Thread(target=tcplink, args=(sock,addr))
    t.start()

客户端

#-*- coding:utf8 -*-
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((127.0.0.1, 9999))
print s.recv(1024)
for data in [David, Yt, Amenda]:
    s.send(data)
    print s.recv(1024)
s.send(exit)
s.close()

 

2015-05-11

python之TCP编程

标签:

原文地址:http://www.cnblogs.com/whuyt/p/4494169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!