来自Python的socket

简单使用socket

socket即套接字, 是网络连接端点,或者说是网络信道 , 用于网络通信.

socket方法: socket(family, type[, proto])

  • family: 一般为AF_INENT
  • type: 可用SOCK_STREAM(表示TCP)或SOCK_DGRAM(表示UDP)

sever

import socket


# create server-socket obj.
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# bind方法接收一个tuple, tuple放入主机地址和端口(指定server运行的地址和端口).
# socket.gethostbyname(socket.gethostname)表示由取到的主机名得到主机IP.
# 也可以写为 bind(('', 4444)) or bind(('127.0.0.1', 4444)), 端口必须为int类型.
serv.bind((socket.gethostbyname(socket.gethostname), 4444))

# listen用于指定监听的client数量.
serv.listen(5)

# 这里接收connect的方式写的很简单, 可以自己考虑.
while True:
    cnn, addr = serv.accept()   # accept会阻塞程序直到有client请求链接.
    print(f"{addr} connection.")    # python3的新特性类似format.
    req = cnn.recv(1024)    # recv会阻塞直到接收到cli发来的数据, 设置长度为1024字节.
    print(req)
    cnn.send(b'Welcome to server!')     # cli链接上后, 向send数据, 数据需为bytes-like类型.
    cnn.close()     # 关闭cli的socket, 结束本次通信.

client

import socket


cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cli.connect((socket.gethostbyname(socket.gethostname()), 4444))
cli.send(b'hello')
banner = cli.recv(1024)
print(banner)

大致思路

先运行server, 再运行client.
server-socket:
    1.创建socket对象.
    2.bind地址信息.
    3.listen监听.
    4.accept等待接收.
    5.处理接收到的client-socket, recv or send or other.
    6.close关闭client-socket.
    7.最后关闭server, close.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值