基于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. Bootstrap 基于Bootstrap和JQuery实现动态打开和关闭tab页

    基于Bootstrap和JQuery实现动态打开和关闭tab页   by:授客 QQ:1033553122 1.   测试环境 JQuery-3.2.1.min.j Bootstrap-3.3.7-d ...

  2. 用IIS进行部署,发布网页,运行DEMO

    因项目需要,正在学习如何部署IIS服务,并发布网站,发布以后,运行网页,具体步骤如下: 一.IIS的部署 在进行部署前,需要将一些必要的配置选好,如图: 打开选项,进行设置,将箭头部分进行勾选 在wi ...

  3. 地图SDK全面升级 – 数十项新功能及优化等你来体验

    腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...

  4. TOMCAT 8.5 配置优化以及JVM配置(windows server)

    下载官方的tomcat,我这里用的是TOMCAT 8.5.46,然后解压出来,解压后的目录如下图 一.server.xml配置优化 进入conf目录,打开server.xml 文件 1. 找到 < ...

  5. 如何在在手机上安装linux(ubuntu )关键词:Termux

    目录 Termux软件 @(如何在在手机上安装ubuntu 关键词:Termux) Termux软件 Termux是一款开源且不需要root,运行在Android终端上极其强大的linux模拟器. 首 ...

  6. iozone - a filesystem benchmark tool 主要是用来测试文件系统 性能

    简介:    磁盘设备之上是文件系统,测试磁盘的工具往往就是调用块设备驱动的接口进行读写测试.而文件系统的测试软件就是针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺序读写随机位置读写的 ...

  7. 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍

    关键词: 1. socket基础 一个典型的客户端/服务器场景中,应用程序使用socket进行通信的方式如下: 各个应用程序创建一个socket.socket是一个允许通信的设备,两个应用程序都需要用 ...

  8. String的源码理解(未写完)

    String本质上是一个char数组(jdk 9之后是byte数组),并且是一个声明为final的数组,并且String的不可变也是通过这种把数组声明为final来实现的 public final c ...

  9. 创建windows服务方法

    将exe程序创建windows服务 sc create TestService binpath= "c:/in estapp.exe" displayname= "Tes ...

  10. ArcGIS10.2配置PostgreSQL9.2标准教程

    ArcGIS 支持Oracle.DB2.PostgreSQL.SQLite关系型数据库升级为企业地理数据,Oracle太庞大,SQLite太小,DB2多在IBM上用,只有PostgreSQL最适合,它 ...