python socket

socket()模块函数
创建套接字语法

socket(socket_family, socket_type, protocol = 0)

socket_family是AF_UNIX(基于文件)或AF_INET(面向网络);
socket_type是SOCK_STREAM(TCP/IP)或SOCK_DGRAM(UDP/IP)

**

TCP

**
TCP服务端
服务端结构

tcps = socket() #创建服务器套接字
tcps.bind()      #把地址绑定到套接字
tcps.listen()      #监听链接
while True:      #服务器无限循环
    tcpc = tcps.accept() #接受客户端链接
    while True:         #通讯循环
        tcpc.recv()/tcpc.send() #对话(接收与发送)
    tcpc.close()    #关闭客户端套接字
tcps.close()        #关闭服务器套接字(可选)

时间戳服务端实例

#!/usr/bin/python3
# -*-coding:utf-8 -*-

from socket import *
import time

COD = 'utf-8'
HOST = '192.168.164.141' # 主机ip
PORT = 21566 # 软件端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)
SIZE = 10 

tcpS = socket(AF_INET, SOCK_STREAM) # 创建socket对象
tcpS.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #加入socket配置,重用ip和端口
tcpS.bind(ADDR) # 绑定ip端口号
tcpS.listen(SIZE)  # 设置最大链接数

while True:
    print("服务器启动,监听客户端链接")
    conn, addr = tcpS.accept() 
    print("链接的客户端", addr)
    while True:
        try:
            data = conn.recv(BUFSIZ) # 读取已链接客户的发送的消息
        except Exception:
            print("断开的客户端", addr)
            break
        print("客户端发送的内容:",data.decode(COD))
        if not data:
            break
        msg = time.strftime("%Y-%m-%d %X") #获取结构化事件戳
        msg1 = '[%s]:%s' % (msg, data.decode(COD))
        conn.send(msg1.encode(COD)) #发送消息给已链接客户端
    conn.close() #关闭客户端链接

tcpS.closel()

TCP客户端

客户端结构

tcpc = socket()    # 创建客户端套接字
tcpc.connect()    # 尝试连接服务器
while True:        # 通讯循环
    tcpc.send()/tcpc.recv()    # 对话(发送/接收)
tcpc.close()      # 关闭客户套接字

时间戳客户端实例

#!/usr/bin/python3
# -*-coding:utf-8 -*-

from socket import *
from time import ctime

HOST = '192.168.164.141' #服务端ip
PORT = 21566 #服务端端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建socket对象
tcpCliSock.connect(ADDR) #连接服务器

while True:
    data = input('>>').strip()
    if not data:
        break
    tcpCliSock.send(data.encode('utf-8')) #发送消息
    data = tcpCliSock.recv(BUFSIZ) #读取消息
    if not data:
        break
    print(data.decode('utf-8'))
tcpCliSock.close() #关闭客户端

**

UDP

**
UDP服务端

服务端结构

udps = socket()   #创建一个服务器的套接字
udps.bind()       #绑定服务器套接字
while True:       #服务器无限循环
    udps.recvfrom()/udps.sendto() # 对话(接收与发送)
udps.close()        # 关闭服务器套接字

时间戳服务端实例

#!/usr/bin/python3
# -*- coding:utf-8 -*-


from socket import *
import time

HOST = '192.168.3.79' #主机ip地址
PORT = 22423  #服务器端口号
SIZE = 1024
ADDR = (HOST, PORT)

udpC = socket(AF_INET, SOCK_DGRAM)
udpC.bind(ADDR)
print("服务器启动...")
while True:
    conn, addr = udpC.recvfrom(SIZE)
    print('主机[%s]发来消息---->%s'% (addr,conn))
    msg = time.strftime("%Y-%m-%d %X")
    data = "[%s]:%s" % (msg, conn.decode('utf-8'))
    udpC.sendto(data.encode('utf-8'), addr)

UDP客户端

客户端结构

udpc = socket()   # 创建客户套接字
while True:      # 通讯循环
    udpc.sendto()/udpc.recvfrom()   # 对话(发送/接收)
udpc.close()      # 关闭客户套接字

时间戳客户端实例

#!/usr/bin/python3
# -*-coding:utf-8 -*-


from socket import *
import time

HOST = '192.168.3.79' #服务器ip地址
PORT = 22423  #服务器端口号
SIZE = 1024
ADDR = (HOST, PORT)

udpS = socket(AF_INET, SOCK_DGRAM) #创建socket对象
while True: #通讯循环
    msg = input(">>:")
    if not msg: continue #输入为空退出当前循环
    udpS.sendto(msg.encode('utf-8'), ADDR) #发送消息
    conn, addr = udpS.recvfrom(SIZE) #接收消息
    print('服务器[%s]发来消息---->%s' % (addr, conn.decode('utf-8')))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

share notes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值