python的socket编程

Posted lisen10

tags:

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

 

 

技术图片

socket主要用于长连接 

简单DEMO:

Server端:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((0.0.0.0, 8000))
server.listen()
sock, addr = server.accept()

# 获取从客户端发送的数据
data = sock.recv(1024)
print(data.decode("utf8"))

sock.send("Hi,{}".format(data.decode("utf8")).encode("utf8"))

server.close()
sock.close()

client端:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((127.0.0.1, 8000))
client.send("feng".encode("utf8"))
data = client.recv(1024)
print(data.decode("utf8"))
client.close()

结果:

server:  feng

client:  Hi,feng

 

 

简易聊天室:

Server端:

 

import socket
import threading

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((0.0.0.0, 8000))
server.listen()


def handle_sock(sock, addr):
    data = sock.recv(1024)  #
    print(data.decode("utf8"))
    re_data = input()
    sock.send(re_data.encode("utf8"))  #


# 获取从客户端发送的数据
# 一次获取1k数据
while True:
    sock, addr = server.accept()

    # 用线程去处理新接收的连接(用户)
    client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
    client_thread.start()

client端:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((127.0.0.1, 8000))

while True:
    re_data = input()
    client.send(re_data.encode("utf8"))  #

    data = client.recv(1024)  #
    print(data.decode("utf8"))

结果:

多个client可以给server发消息

 

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

python,socket网络编程,最简单的server端和client端代码

golang代码片段(摘抄)

Python--网络编程-----socket代码实例--聊天软件升级版

Python下的socket编程

Python全栈开发-Day8-Socket网络编程

Python网络编程常用代码