Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19967
  • 博文数量: 10
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-12 09:51
文章分类

全部博文(10)

文章存档

2017年(9)

2016年(1)

我的朋友

分类: Python/Ruby

2017-09-01 11:42:10

1.UDP连接
服务端:
import socket
port=8081
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('',port))
print('正在等待接入...')
while True:
    data,addr=s.recvfrom(1024)
    print('Received:',data,'from',addr)
客户端:
import socket
port=8081
host='localhost'
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto(b'hello,this is a test info !',(host,port))

2.TCP
#_*_coding:utf-8_*_


from socket import *
from time import ctime
from time import localtime
import time


HOST=''
PORT=1122  #设置侦听端口
BUFSIZ=1024
ADDR=(HOST, PORT)
sock=socket(AF_INET, SOCK_STREAM)


sock.bind(ADDR)


sock.listen(5)
#设置退出条件
STOP_CHAT=False
while not STOP_CHAT:
    print('等待接入,侦听端口:%d' % (PORT))
    tcpClientSock, addr=sock.accept()
    print('接受连接,客户端地址:',addr)
    while True:
        try:
            data=tcpClientSock.recv(BUFSIZ)
        except:
            #print(e)
            tcpClientSock.close()
            break
        if not data:
            break
        #python3使用bytes,所以要进行编码
        #s='%s发送给我的信息是:[%s] %s' %(addr[0],ctime(), data.decode('utf8'))
        #对日期进行一下格式化
        ISOTIMEFORMAT='%Y-%m-%d %X'
        stime=time.strftime(ISOTIMEFORMAT, localtime())
        print data
        s='%s发送给我的信息是:%s' %(addr[0],data)
        tcpClientSock.send(s)
        print([stime], ':', data.decode('utf8'))
        #如果输入quit(忽略大小写),则程序退出
        STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
        if STOP_CHAT:
            break
tcpClientSock.close()
sock.close()  


客户端:
#_*_coding:utf-8_*_


from socket import *




class TcpClient:
    # 测试,连接本机
    HOST = '127.0.0.1'
    # 设置侦听端口
    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 = input('>')
            if not data:
                break
            # python3传递的是bytes,所以要编码
            self.client.send(data)
            print('发送信息到%s:%s' % (self.HOST, data))
            if data.upper() == "QUIT":
                break
            data = self.client.recv(self.BUFSIZ)
            if not data:
                break
            print('从%s收到信息:%s' % (self.HOST, data))




if __name__ == '__main__':
    client = TcpClient()  
  
阅读(360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~