socket套接字

Socket

1.什么是Socket

​ socket是一个模块,可以写一套c/s架构的套接字

2.为甚要使用Socket

​ socket套接字会封装好各层协议的工作

​ 好处:

​ 可以节省开发成本。

3.如何使用

​ import scoket

注意:客户端与服务端必须遵循:

​ 一端send 另一端recv

​ 不能两端同时send或recv

初始socket套接字

# 服务端*********************************
import socket

server=socket.socket()

#绑定(主机,端口号)到套接字
server.bind(('127.0.0.1',9527))

#开始TCP监听
server.listen(5)#listen(5)半连接池 设置等待程序个数

#被动接受TCP客户的连接,(阻塞式)等待连接的到来
# conn: 相当于服务端往客户端挖的管道
conn,addr=server.accept()
print(addr)

data=conn.recv(1024).decode('utf-8')
print(data)

conn.send('我不好'.encode('utf-8'))

conn.close()

server.close()
# 客户端*************************************
import socket

client=socket.socket()

#主动初始化TCP服务器连接
# client: 相当于客户端往服务端挖的管道
client.connect(('127.0.0.1',9527))

client.send('你好'.encode('utf-8'))

data=client.recv(1024).decode('utf-8')
print(data)


# 关闭连接
client.close()

循环通信套接字

# 服务端
import socket

server=socket.socket()

#绑定(主机,端口号)到套接字
server.bind(('127.0.0.1',9527))

#开始TCP监听
server.listen(5)#listen(5)半连接池 设置等待程序个数

#被动接受TCP客户的连接,(阻塞式)等待连接的到来
conn,addr=server.accept()
print(addr)
while True:
    data=conn.recv(1024).decode('utf-8')
    print(data)

    if data=='q':
        break

    send_msg=input('server--->client').encode('utf-8')
    conn.send(send_msg)

conn.close()

server.close()
# 客户端
import socket

client=socket.socket()

#主动初始化TCP服务器连接
client.connect(('127.0.0.1',9527))
while True:
    send_msg=input('client--->srevre:').encode('utf-8')
    client.send(send_msg)
    if send_msg=='q':
        break

    data=client.recv(1024).decode('utf-8')
    print(data)

client.close()

服务端多个客户端

# 服务端
import socket

server=socket.socket()

#绑定(主机,端口号)到套接字
server.bind(('127.0.0.1',9527))

#开始TCP监听
server.listen(5)#listen(5)半连接池 设置等待程序个数
while True:
    #被动接受TCP客户的连接,(阻塞式)等待连接的到来
    conn,addr=server.accept()
    print(addr)
    while True:
        try:

            data=conn.recv(1024).decode('utf-8')
            print(data)

            # mac和linux系统bug: b''
            if len(data) == 0:
                continue

            if data=='q':
                break


            conn.send(data.encode('utf-8'))

        except Exception as e:
            print(e)
            break
    conn.close()

server.close()
# 客户端
import socket

client=socket.socket()

#主动初始化TCP服务器连接
client.connect(('127.0.0.1',9527))
while True:
    send_msg=input('client--->srever:').encode('utf-8')

    client.send(send_msg)
    if send_msg=='q':
        break

    data = client.recv(1024).decode('utf-8')
    print(data)

client.close()
posted @ 2020-03-29 15:12  风啊风啊  阅读(178)  评论(0编辑  收藏  举报