day08-socket简单编程

Posted 雷大侠!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day08-socket简单编程相关的知识,希望对你有一定的参考价值。

#客户端
import socket
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect((localhost,6969))
while True:
    msg = input(">>:").strip()
    if len(msg) == 0:continue
    client.send(msg.encode("utf-8"))#只能发送字节类型数据
    data = client.recv(1024)
    print("recv:",data.decode())
client.close()
#-*-coding:utf-8-*-
#服务器端
import socket
server = socket.socket()
server.bind((localhost,6969)) #绑定要监听端口
server.listen(5) #监听
print("我要开始等电话了")
while True:#第一层
    conn, addr = server.accept()  # 等电话打进来
    # conn就是客户端连过来而在服务器端为其生成的一个连接实例在此处阻塞,一直到客户端链接进来
    print(conn, addr)
    print("电话来了")
    count = 0
    while True:#不停循环收取消息
        data = conn.recv(1024)
        print("recv:",data)
        if not data:#如果不判断,客户端断开你,会不停接受空数据,发生死循环
            print("client has lost...")
            break#这里断开就会再次回到第一次层,服务端还可以为下一个客户端服务,不能断,实现多用户连接
        conn.send(data.upper())
        count+=1
        if count >10:break
server.close()

此时服务器端依然只能同时为一个客户服务,其客户来了,排队需要连接挂起,否则报告 

输出:

我要开始等电话了
<socket.socket fd=300, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1‘, 6969), raddr=(‘127.0.0.1‘, 53167)> (‘127.0.0.1‘, 53167)
电话来了
recv: b‘12‘

输入:

>>:12
recv: 12
>>:

 

以上是关于day08-socket简单编程的主要内容,如果未能解决你的问题,请参考以下文章

apriori片段代码

Linux网络编程(Socket)

day06-jsp

day8-------socket网络编程

golang代码片段(摘抄)

你可能不知道的JavaScript代码片段和技巧(下)