python socket基本流程

1.基于TCP的流程图

2.基于TCP的通信流程 

服务端:

#!/usr/bin/env python
# --*-- encoding:utf-8 --*--
import socket

#创建套接字
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定IP端口,参数为元组
sock.bind(('127.0.0.1',9000,))
#设置最大连接数,并监听
sock.listen(10)
while True:
    # 等待客户端的连接 ,阻塞在这里
    conn, addr = sock.accept()
    conn.sendall(bytes('你已经连接上机器人',encoding='utf-8'))
    print(conn,addr)
    while True:
        res =conn.recv(1024)
        res = str(res,encoding='utf-8')
        if res== 'q':
            break
        else:
            conn.sendall(bytes(res+',SB',encoding='utf-8'))
#关闭连接
sock.close()

客服端:

#!/usr/bin/env python
# --*-- encoding:utf-8 --*--
import socket
#创建套接字
sock  = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#建立连接
sock.connect(('127.0.0.1',9000))
#recv也是阻塞的
res = sock.recv(1024)
print(str(res,encoding='utf-8'))
while True:
    res = input('请输入要发送的内容,q退出')
    if res == 'q':
        sock.sendall(bytes(res,encoding='utf-8'))
        break
    else:
        sock.sendall(bytes(res, encoding='utf-8'))
        res = sock.recv(1024)
        print(str(res, encoding='utf-8'))
#关闭连接
sock.close()

 3.基于UDP的通信

服务端:

#!/usr/bin/env python
# --*-- encoding:utf-8 --*--
import socket
#创建套接字
sscok = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定端口
sscok.bind(('127.0.0.1',9999))
print('服务端已开启')
while True:
    #阻塞,等待客户端的消息
    data,addr =sscok.recvfrom(1024)  #有两个返回值,一个消息内容 ,一个地址
    print('收到%s的信息:%s'% (addr,str(data,encoding='utf-8')))
    sscok.sendto(bytes('广播消息:XXX中了500万',encoding='utf-8'),addr) #指定地址,发送消息
#关闭连接
sscok.close()

客服端:

#!/usr/bin/env python
# --*-- encoding:utf-8 --*--
import socket
#创建套接字
cscok = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
    data = input('请输入要发送的内容')
    #向指定的服务端发送消息
    cscok.sendto(bytes(data,encoding='utf-8'),('127.0.0.1',9999,))
    #接收来自服务端的消息
    data,addr = cscok.recvfrom(1024)
    print('收到来自%s的消息:%s'%(addr,str(data,encoding='utf-8')))
#关闭连接
cscok.close()

 

posted @ 2017-05-04 08:51  1916  阅读(213)  评论(0)    收藏  举报