原文: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 sys
reload(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:
# break
if __name__ == '__main__':
client = TcpClient()
Server:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from socket import *
from time import ctime
from time import localtime
import time
# ip地址
HOST = '25.30.10.49'
# 侦听端口
PORT = 1122
BUFSIZE = 1024
ADDR = (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:
break
output.close()
tcpCliSock.close()
tcpSrvSock.close()