博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Day34
阅读量:5372 次
发布时间:2019-06-15

本文共 2934 字,大约阅读时间需要 9 分钟。

Socket

基于TCP的socket

client端

import socketsk=sk.socket.socket()sk.connect(('127.0.0.1',9000))while True:    inp=input(">>>")    sk.send(inp.encode('utf-8'))    if inp=='q':break    ret=sk.recv(1024).decode('utf-8')    if ret=='q':break    print(ret)sk.close()
View Code

server端

import socketsk=sk.socket.socket()sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEDDR,1)sk.bind(('127.0.0.1',9000))sk.listen()        #参数n表示同一时间可以有n个链接等待与server端通信while True:    conn,addr=sk.accept()    while True:        ret=conn.recv(1024).decode('utf-8')        if ret=='q':break        print(ret)        inp=input('>>>')        conn.send(inp.encode('utf-8'))        if inp=='q':break    conn.close()sk.close()# tcp协议适用于 文件的上传和下载 发送邮件 发送重要的文件# 每和一个客户端建立链接 都会在自己的操作系统上占用一个资源# 同一时间 只能 和一个客户端通信
View Code

基于UDP的socket

client端

import socketsk=socket.socket(type=socket.SOCK_DGRAM)name=input('name:')while True:    inp=input('>>>')    sk.sendto(('%s:%s'%(name,inp)).encode('utf-8'),('127.0.0.1',9090))    msg,addr=sk.recvfrom(1024)    print(msg.decode('utf-8'))sk.close()
View Code

server端

import socketlst={
'egon':'\033[1;31m','yuan':'\033[1;34m'}sk=socket.socket(type=socket_DGRAM)sk.bind(('127.0.0.1',9090))while True: msg,client_addr=sk.recvfrom(1024) name,msg=msg.decode('utf-8').spilt(':') color=lst.get(name.strip(),'') print('%s%s\033[0m'%(color,msg.decode('utf-8'))) inp=input('>>>') sk.sendto(inp.encode('utf-8'),client_addr)sk.close()
View Code

UDP进阶

mysocket

from socket import *class Mysocket(socket):    def __init__(self,coding='utf-8'):        super().__init__(type=SOCK_DGRAM)        self.coding=coding    def my_recv(self,num):        msg,addr=self.recvfrom(num)        return msg.decode(self.coding),addr    def my_send(self,msg,addr):        return self.sendto(msg.encode(self.coding),addr)
View Code

client端

from mysocket import Mysocketsk = Mysocket()while True:    inp = input('>>>')    if inp == 'q':break    sk.my_send(inp,('127.0.0.1',9090))    msg,addr = sk.my_recv(1024)    if msg == 'q':break    print(msg)sk.close()
View Code

server端

from mysocket import Mysocketsk = Mysocket()sk.bind(('127.0.0.1',9090))while True:    msg,client_addr= sk.my_recv(1024)   # udp协议不用建立链接    print(msg)    inp = input('>>>')    sk.my_send(inp,client_addr)sk.close()
View Code

时间同步

client端

import timeimport socketsk=socket.socket(type=socket.SOCK_DGRAM)while True:    sk.sendto('%Y/%m/%d %H:%M:%S'.encode('utf-8'),('127.0.0.1',9090))    ret,addr=sk.recvfrom(1024)    print(ret.decode('utf-8'))    time.sleep(1)sk.close()
View Code

server端

# 时间同步服务# udp协议完成的# 4、5 台机器# 00:00 从一个文件里 读一些数据 明天的搜索# 在一个机房里 有一台标准时间的服务器# 机房里所有的机器 都每隔一段时间 就去请求这台服务器 来获取一个标准时间import timeimport socketsk=socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1',9090))while True:    msg,addr=sk.recvfrom(1024)    sk.sendto(time.strftime(msg.decode('utf-8')).encode('utf-8'),addr)sk.close()
View Code

 

转载于:https://www.cnblogs.com/a352735549/p/8990788.html

你可能感兴趣的文章
Linux--多网卡的7种Bond模式
查看>>
Oracle命令(一):Oracle登录命令
查看>>
业务建模 之 业务用例图
查看>>
EasyUI基础入门之Pagination(分页)
查看>>
一次PHP代码上线遇到的问题
查看>>
显示密码
查看>>
实现one hot encode独热编码的两种方法
查看>>
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>
poj 1068 Parencodings
查看>>
docker 数据卷管理
查看>>