python socket编程入门级

Posted 一起来学python

tags:

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

客户端

import socket
import time

sk = socket.socket()  # 第一步:创建socket对象
address = (‘127.0.0.1‘, 8080)  # 协议是ip+端口(类型元组)
sk.connect(address)  # 第二步:建立链接
while True:
    inp = input(‘客户端>>>>>>>>>
‘)
    if inp == ‘exit‘:
        break
    sk.send(bytes(inp, ‘utf8‘))  # 第三步:请求数据
    time.sleep(1)  # low方法防止粘包
    data = sk.recv(1024)  # 接收确认信息
    print("接收服务端的数据", str(data, ‘utf8‘))
sk.close()

  服务端

import socket

# family type
# AF_INET,AF_INET6
# AF_UNIX
# SOCK_STREAM:: TCP
# SOCK_DGRAM :: UDP
# sk只负责绑定端口等待链接,发送接收消息用conn。
sk = socket.socket()  # 默认参数tcp
address = (‘127.0.1‘, 8080)
sk.bind(address)  # 绑定ip协议和端口
sk.listen(3)  # 定义最大可以挂起连接数。
print(‘服务的waiting.......‘)
while 1:
    conn, addr = sk.accept()  # 等待接收来自客户端的信息
    print(addr)
    while 1:
        try:
            data = conn.recv(1024)
        except Exception:
            break
        if not data: break
        print(‘接收到来自客户端的信息......‘, str(data, ‘utf8‘))
        inp = input(‘》》》》》》》》‘)
        conn.send(bytes(inp, ‘utf8‘))

  使用多线程版

import socketserver


class MyServer(socketserver.BaseRequestHandler):
    # 重写父类的方法
    def handle(self):
        print(‘waiting.......‘)
        while 1:
            conn = self.request
            print(self.client_address)
            while 1:
                try:
                    data = conn.recv(1024)
                except Exception:
                    break
                if not data:
                    break
                print(‘......‘, str(data, ‘utf8‘))
                inp = input(‘》》》》》》》》‘)
                conn.sendall(bytes(inp, ‘utf8‘))
            conn.close()


if __name__ == ‘__main__‘:
    host = ‘127.0.0.1‘
    ip = ‘8080‘
    server = socketserver.ThreadingTCPServer((host, ip), MyServer)#多线程通话
    # 不会出现在一个客户端结束后,当前服务器端就会关闭或者报错,而是继续运行,与其他的客户端继续进行通话。
    server.serve_forever()

  

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

Python 之 Socket编程(TCP/UDP)

Cg入门16:Fragment shader - 片段级光照

python3socket编程入门

python socket编程入门(编写server实例)-乾颐堂

python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

python全栈开发从入门到放弃之socket网络编程基础