socket的简单例子
最近刚刚开始学了socket的模块,就写了一个服务器与客户端交互的程序
有两种模式:
1.就是先电脑自动回复
2.就是人工服务
接下来就是代码了
服务器端的代码:
import socket
server=socket.socket()
server.bind(('localhost',9999))
print('--------服务器已启动--------')
server.listen()
duihua={'你好':'你也好','你是谁':'我是 Arthur,我哥叫浩南哥','谁最帅':'当然是我浩南哥'}#可以在这里写一些常用回答
while True:
print('-----------正在连接用户-----------')
conn,addr=server.accept()
print('--------------已连接用户-------------')
print('new conn',addr)
while True:
date=conn.recv(1024).decode()
if not date:
print('用户已断开')
break
elif date in duihua:#自动回答用户问题
conn.send(duihua[date].encode('utf-8'))
if date=='人工服务':#自己亲自回答用户问题
print('---进入人工服务---')
conn.send('现在已为你连接人工服务'.encode('utf-8'))
while True:
date1=conn.recv(1024).decode()
if date1=='退出':
conn.send('已断开人工服务'.encode('utf-8'))
print('---已断开人工服务---')
break
print('用户问题:',date1)
date2=input('回复:')
conn.send(date2.encode('utf-8'))
else:
conn.send('我不知道你在说什么,你可用人工服务来解决的需要'.encode('utf-8'))
server.close()
客户端的代码:
import socket
client=socket.socket()
client.connect(('localhost',9999))
while True:
say=input('你:').strip()
if len(say)==0:continue
elif say=='F':
client.close()
break
else:
client.send(say.encode('utf-8'))
date=client.recv(1024)
print('Arthur:',date.decode())
随意批评指点
socket的简单例子的更多相关文章
- c# socket编程简单例子
服务器端代码 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Thr ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- 用socket.io实现websocket的一个简单例子
socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...
- 16 Socket通信(简单例子)
服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Da ...
- socket.io简单入门(一.实现简单的图表推送)
引子:随着nodejs蓬勃发展,虽然主要业务系统因为架构健壮性不会选择nodejs座位应用服务器.但是大量的内部系统却可以使用nodejs试水,大量的前端开发人员转入全堆开发也是一个因素. 研究本例主 ...
- Hadoop RPC简单例子
jdk中已经提供了一个RPC框架-RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架. 同其他RPC框架一样,Hadoop RPC分为四个部分: ( ...
- delphi 三层架构简单例子(经测试成功)
delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...
随机推荐
- (@WhiteTaken)设计模式学习——组合模式
下面来学习一下组合模式. 组合模式概念是什么呢.从别的地方抄来了一些理论. 理论:将对象组合成树形结构以表示"部分-整体"的层次结构.Composite模式使得用户对单个对象和组合 ...
- C#编译器和CLI的安装
为了完成C#程序编译和运行,需要安装代码对应版本的编译器和CLI(公共语言框架)平台. (部分内容摘自<C#本质论>) 针对主流的CLI平台(Microsoft .NET),有两种安装方案 ...
- JVM菜鸟进阶高手之路十三(等你来战!!!)
转载请注明原创出处,谢谢! 前几天有个朋友问了我个问题,下面给大家分享下,希望大家积极在评论区进行评论留言,等你来战!!! 先来个趣味题,热身下,引出后面的jvm题目. 地上的影子是那个人的? 地上的 ...
- 【ASP.NET MVC 学习笔记】- 14 HtmlHlper的扩展方法
本文参考:http://www.cnblogs.com/willick/p/3428413.html 1.在 MVC 中用于生成 Html 元素的辅助类是 System.Web.Mvc 命名空间下的 ...
- 利用Python对文件批量重命名
由于要用到对无序的文件进行重命名,以下写了一个脚本,进行批量进行重命名. 基本格式是 i.后缀名 ( i 循环条件下的数 ) 1 #coding:utf8 2 import os; 3 4 def ...
- Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类
前言 前面一篇博文写的是Combiner优化MapReduce执行,也就是使用Combiner在map端执行减少reduce端的计算量. 一.作业的默认配置 MapReduce程序的默认配置 1)概述 ...
- Spring Bean装配方式
Spring装配机制 在xml中进行显示配置 在Java中进行显示配置 隐式bean发现机制和自动装配 自动化装配bean 组件扫描(component scanning),Spring会自动发现应用 ...
- linux系统莫名被黑的诡异经历
2017年10月28日,ssh登录本地虚拟机之后发现主机名被改成了HUAIWEI_P10. 我一个同事用的此款手机,起初怀疑是他,没放心上. 今天(10月30)发现自己ssh登录不上了.恼火了办公室开 ...
- 有两组随机生成的(0~99999)Int32数据A和B,将A按顺序判断在B中是否存在并记录在Boolean型的C中
http://www.cnblogs.com/asxinyu/p/4504487.html
- myeclipse10破解失败,正解
此文图借用他人的,很是经典 第一步:输入任意用户名 第二步:点击Systemid... 按钮,自动生成本机器的systemid.ps:确定本机的systemid,如果和破解器生成不一致,需要copy本 ...