Python Socket学习记录

原文: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()




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值