Python Socket学习记录

来源:互联网 发布:嫁コレ数据提取资料 编辑:程序博客网 时间:2024/06/04 22:47

原文:www.cnblogs.com/GarfieldTom/archive/2012a/12/16/2820143.html

原文:https://www.2cto.com/kf/201408/328150.html


Socket TCP方式通讯

Client:

# !/usr/bin/env python# -*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')from socket import *class TcpClient:    # 测试,连接本机    HOST = '25.30.10.49'    # 设置侦听端口    PORT = 1122    BUFSIZ = 1024    ADDR = (HOST, PORT)    def __init__(self):        self.client = socket(AF_INET, SOCK_STREAM)        self.client.connect(self.ADDR)        while True:            data = raw_input('请输入内容:'.encode('gbk'))            if not data:                break            if data.upper() == "QUIT":                break            # python3传递的是bytes,所以要编码            self.client.send(data)            # print'发送信息到%s:%s'.encode('gbk') % (self.HOST, data)            # data = self.client.recv(self.BUFSIZ)            # if not data:            #     breakif __name__ == '__main__':    client = TcpClient()

Server:

# !/usr/bin/env python# -*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')from socket import *from time import ctimefrom time import localtimeimport time# ip地址HOST = '25.30.10.49'# 侦听端口PORT = 1122BUFSIZE = 1024ADDR = (HOST, PORT)tcpSrvSock = socket(AF_INET, SOCK_STREAM)# 从指定的端口,从任何发送者,接收UDP数据tcpSrvSock.bind(ADDR)# 最多连接请求数tcpSrvSock.listen(5)# 设置退出条件STOP_CHAT = False# 写文件output = open('data1.txt', 'w+')while not STOP_CHAT:    print('等待接入,侦听端口:%d' % (PORT))    # 接收一个数据    tcpCliSock, addr = tcpSrvSock.accept()    print'接受连接,客户端地址:'.decode('utf-8'), addr    output.writelines(        str(addr)                      )    output.writelines("""    sxxx    """)    while True:        try:            data = tcpCliSock.recv(BUFSIZE)            output.writelines(                str(data)                              )        except error, e:            print e            tcpCliSock.close()            break        if not data:            break        ISOTIMEFORMAT = '%Y-%m-%d %X'        stime = time.strftime(ISOTIMEFORMAT, localtime())        # s = '%s发送给我的信息是:%s' % (addr[0], data)        # tcpCliSock.send(s)        print [ctime()], ':', data.decode('gb2312')        STOP_CHAT = (data.decode('gbk').upper() == "QUIT")        if STOP_CHAT:            breakoutput.close()tcpCliSock.close()tcpSrvSock.close()



原创粉丝点击