基于TCP协议的套接字编程(简单)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) data = conn.recv(1024).decode('utf-8')
print(data) conn.send('来自服务端消息:我不好'.encode('utf-8'))
conn.close() server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) client.send('来自客户端消息:你好'.encode('utf-8')) data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP协议的套接字编程(复杂)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) while True:
# 接收客户端发送来的消息
data = conn.recv(1024).decode('utf-8')
print(data)
if data == 'q':
break
send_msg = input('server--->client: ').encode('utf-8')
conn.send(send_msg) conn.close()
server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) while True:
send_msg = input('client---> server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break # 服务端返回的数据
data = client.recv(1024).decode('utf-8')
print(data) client.close()

服务端服务多个客户

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 8888)
)
server.listen(5) # 半连接数,等待的用户 while True:
conn, addr = server.accept()
print(addr) while True:
try:
data = conn.recv(1024).decode('utf-8')
print(data) # mac\linux的bug:b''
if len(data) == 0:
continue if data == 'q':
break
send_msg = input('server--->client:').encode('utf-8')
conn.send(send_msg)
except Exception as e:
print(e)
break conn.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 8888)
) while True:
send_msg = input('client--->server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP连接的socket套接字编程的更多相关文章

  1. 基于TCP协议的socket套接字编程

    目录 一.什么是Scoket 二.套接字发展史及分类 2.1 基于文件类型的套接字家族 2.2 基于网络类型的套接字家族 三.套接字工作流程 3.1 服务端套接字函数 3.2 客户端套接字函数 3.3 ...

  2. 基于UDP协议的socket套接字编程

    目录 一.UDP套接字简单示例 1.1 服务端 二.客户端 三.UPD套接字无粘包问题 3.1 服务端 3.2 客户端 四.qq聊天 4.1 服务端 4.2 客户端1 4.3 客户端2 4.4 运行结 ...

  3. Linux之socket套接字编程20160704

    介绍套接字之前,我们先看一下传输层的协议TCP与UDP: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UD ...

  4. linux网络环境下socket套接字编程(UDP文件传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. socket套接字编程 HTTP协议

    socket套接字编程  套接字介绍  1. 套接字 : 实现网络编程进行数据传输的一种技术手段  2. Python实现套接字编程:import  socket  3. 套接字分类 >流式套接 ...

  7. socket 套接字编程

    今日内容 socket 套接字编程 简易服务端与客户端代码实现 通信循环 黏包现象(TCP协议) 报头制作.struct 模块.封装形式 内容详细 一.socket 套接字编程 实现一款能够进行数据交 ...

  8. Learning-Python【28】:基于TCP协议通信的套接字

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  9. Python 31 TCP协议 、socket套接字

    1.TCP协议 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割. (1)三次握手建链接( ...

随机推荐

  1. [iOS开发]关于cocoapods的使用

    CocoaPods的使用 关于CocoaPods,相信做iOS开发的应该都比较熟悉了.Cocoapods是一个用来管理第三方库的比较好用的管理工具.关于Cocoapods的东西不再多说,接下来进入正题 ...

  2. 踩坑---vue-cli搭建的项目中localhost不能访问

    只需要在config文件夹里面的index.js文件里面的module.exports下面的dev中的 host:'localhost' 改为 host:'0.0.0.0' ,然后重启服务器

  3. gcd套路变换

    gcd套路变换 GCD https://www.luogu.org/problem/P2568 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. $ 1& ...

  4. 6.jenkins构建任务3-java项目

    java项目 部署java的maven项目 1.检查插件,新版的jenkins默认就会安装  maven的插件 没有的话手动安装一下. Maven Integration plugin 2.安装环境 ...

  5. vue中is的使用

    :is作用 1.动态切换不同组件 <div id="app"> <button @click="changeComponent('component1' ...

  6. [Pytorch Bug] "EOFError: Ran out of input" When using Dataloader with num_workers=x

    在Windows上使用Dataloader并设置num_workers为一个非零数字,enumerate取数据时会引发"EOFError: Ran out of input"的报错 ...

  7. Django多进程滚动日志的问题

    使用RotatingFileHandler控制日志文件的大小 # settings.py LOGGING = { ... 'handlers': { ... 'file': { 'level': 'I ...

  8. 【CF1053E】Euler tour

    [CF1053E]Euler tour 题面 CF 洛谷 大概意思是你有一棵树,然而你并不知道这棵树是啥.给你一个确定了一些位置的欧拉序(就是\(ST\)表求\(LCA\)的那个序列),问你是否存在一 ...

  9. 下载文件旁边附的MD5/SHA256等有什么用途?

    在我们下载很多软件时,旁边会出现md5,sha1/sha256/sha512等一长串字符串,这些字符串是什么意义呢? 因为怕盗版或者怕软件被植入病毒或者插件等,要对软件的完整性做校验.步骤:先下载完软 ...

  10. sequelize时间自动格式化

    问题 每次查询datetime的字段,显示出来都是这种格式 2019-08-27T12:02:05.000Z 解决办法 初始化Sequelize的时候传入dialectOptions参数 let se ...