一、socket处理单个连接

recv方法不是可以随便接收多大的数据都可以。官方建议是8KB,  即conn.recv(8192)

import socket

client = socket.socket()
'''
等价于client = socket.socket(family=socket.AF_INET, type=socket.SOCKET_STREAM)
'''
client.connect(('localhost', 6969))
client.send(b"hello, server") data = client.recv(1024)
print('收到服务器返回数据:', data) client.close() #######################################
#
# 收到服务器返回数据: b'HELLO, SERVER'
#
#######################################

客户端代码

import socket

server = socket.socket()
server.bind(("localhost", 6969))
server.listen() # 开始监听 one_person, one_address = server.accept()
data = one_person.recv(1024)
print('收到客户端数据:', data)
one_person.send(data.upper()) server.close() #######################################
#
# 收到客户端数据: b'hello, server'
#
#######################################

服务器端代码

区别:客户端和服务器连接一通电话,来回通话,如果客户端断开 Windows里服务器端也断开“远程主机关闭了一个现有连接”  Linux里服务器会进入死循环,不停接收到空字符

注意:不能send空字符。如果send空字符服务器端会卡住,因为此时服务器端还在等待接收数据。

二、socket处理单个连接,端口后可以用别的连接启动,客户端输入exit退出

import socket

client = socket.socket()
client.connect(('127.0.0.1', 6969))
while True:
data = input(">>").strip()
client.send(data.encode('utf-8'))
if data.lower() == 'exit':
break
print(client.recv(1024).decode("utf-8")) client.close()

客户端代码

import socket

server = socket.socket()
server.bind(('0.0.0.0', 6969))
server.listen() ##############################
while True:
first_client, first_address = server.accept()
while True:
data = first_client.recv(1024)
print(first_address, data)
if data.decode("utf-8").lower() == 'exit':
print("client is lost..")
break
first_client.send(data.upper())
##############################

服务器端代码

Socket实例的更多相关文章

  1. 网络编程基础【day09】:简单socket实例(二)

    本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...

  2. java tcp socket实例

    java tcp socket实例 2011-04-20 13:58 2364人阅读 评论(1) 收藏 举报 socketjavatcpthreadserverclass package com.ne ...

  3. socket实例2

    第二个实例创建一个java工程,基于tomcat服务器,程序运行时会启动客户端,实现了一个客户端向其他的客户端发送即时信息的功能 MainWindow.java package com.jikexue ...

  4. python socket实例练习

    Web Server是基于Socket编程,又称之为网络编程,socket是网络编程接口,socket可以建立网络连接,读数据,写数据.socket模块定义了一些常量参数,用来指定socket的的地址 ...

  5. C # socket 实例

    同步客户端存储示例 下面的示例程序创建连接到服务器的客户端.             客户端使用一个同步套接字生成,因此,客户端应用程序的执行挂起,直到服务器返回响应.  应用程序将字符串发送到服务器 ...

  6. py测试一个Socket实例

    本实例旨在了解py和socket的一些相关知识. 1.服务器端搭建py监听程序. 在客户端搭建python,linux默认自带了python2.7,先不管安装了. 接着编写socket程序,可以在本地 ...

  7. python socket实例

    1.客户端向服务端发送 #coding:utf-8 '''客户端''' import socket khd=socket.socket() #声明socket类型,同时生产socket连接对象 khd ...

  8. 简单的php socket 实例

    server: <?php set_time_limit(0); $ip = '127.0.0.1'; $port = 8888; // 1. 创建 if( ($sock = socket_cr ...

  9. socket实例1

    第一个例子创建了一个java工程,用来测试Socket的连接功能,通过浏览器可访问,地址为:127.0.0.1:端口号 MyServerSocket.java, package com.jikexue ...

  10. java Socket实例

    可以实现客户端与服务端双向通信,支持多客户端连接,客户端断开连接,服务端不会出现异常 服务端代码: package com.thinkgem.jeesite.modules.socketTest.de ...

随机推荐

  1. C# 转换关键字 operator

    operator 使用 operator 关键字重载内置运算符,或在类或结构声明中提供用户定义的转换. 假设场景,一个Student类,有语文和数学两科成绩,Chinese Math,加减两科成绩,不 ...

  2. Linux日志 系统日志及分析

    Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 / ...

  3. c# partial 关键字的使用

    C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现.(2) ...

  4. oracle 查询表中重复数据

    select * from tablename where id in (select id from tablename group by id having count(id) > 1)

  5. [android] smartimageview&常见的开源代码

    github上搜索开源框架android-smarty-imageview,下载压缩包,拷贝我们之前写的网络图片查看器布局. 解压下载包里面的数据,找到java源码拷贝到我们的项目里,这时我们可以看到 ...

  6. git error: RPC failed; result=56, HTTP code = 200

    突然发现git pull 后出现几次都无果,百度后, 发现是curl的postBuffer 默认值较小的原因,配置下这个值,就不会出现该错误了.解决如下: git config --global ht ...

  7. 25.QT-模型视图

    模型视图设计模式的核心思想 使模型(数据)与视图(显示)相分离 模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据的显示方式,无需数据如何组织存储 当数据发生改变时,会通过信号 ...

  8. Netty实战五之ByteBuf

    网络数据的基本单位总是字节,Java NIO 提供了ByteBuffer作为它的字节容器,但是其过于复杂且繁琐. Netty的ByteBuffer替代品是ByteBuf,一个强大的实现,即解决了JDK ...

  9. 腾讯云下的CentOS7 配置 Apache服务器

    第一步 :安装Apache服务程序(软件包名为httpd) * yum install httpd 第二步:配置httpd.conf文件 * vi /etc/httpd/conf/httpd.conf ...

  10. 对比JavaScript中的Continue和Break

    译者按: 最好是不用,不过基础知识要掌握. 原文: JavaScript: Continue vs Break - Learn the difference between the continue ...