import socket
import threading
host=''
port=6889 def cilenThred(conn,addr):
print("成功接受客户端{}的连接:{}".format(addr[0],str(addr[1])))
#服务器向客户端发送信息说明已经连接成功
msg='你已经成功连接到服务器'
conn.sendall(bytes(msg,encoding="utf-8"))
while True:
data=conn.recv(1024)
print("服务器接受到的数据为{}".format(str(data,encoding="utf-8")))
message='server>>{}'.format(str(data,encoding="utf-8"))
conn.sendall(bytes(message,encoding="utf-8"))
chioce = str(conn.recv(1024),encoding="utf-8")
if chioce=="exit":
conn.close()
break
else:
pass try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定ip地址和端口号
s.bind((host,port))
print('成功绑定了ip地址,端口号为{}'.format(port))
#服务器创建监听
s.listen(10)
print("创建监听模式")
while True:
#成功接收客户端的连接,兵返回连接对象和地址
conn,addr=s.accept()
t=threading.Thread(target=cilenThred,args=(conn,addr))
t.start()
except socket.error as msg:
print("socket出现错误,错误为{}".format(msg))
finally:
s.close()

客户端:

import socket
import sys host="localhost"
port=6889 try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('成功创建socket对象')
s.connect((host,port))
print("成功连接到服务器端")
reply=str(s.recv(1024),encoding="utf-8")
print("成功接受到服务器返回的内容:{}".format(reply))
while True:
message=input("请输入要发送到服务器的信息》》")
s.sendall(bytes(message,encoding="utf-8"))
print("向服务器发送请求成功")
reply1=str(s.recv(1024),encoding="utf-8")
print("成功接受到服务器返回的内容{}".format(reply1))
chioce=input("是否继续输入?(y/n)")
if chioce.lower()=="y":
s.sendall(bytes("ok",encoding="utf-8"))
pass
else:
s.sendall(bytes("exit",encoding="utf-8"))
print("输入结束")
break
except socket.error as msg:
print("创建socket错误,错误为{0}".format(msg))
sys.exit(-1)
finally:
s.close()

socket 套接字服务器端和客户端发送信息的更多相关文章

  1. python socket 套接字编程 单进程服务器 实现多客户端访问

    服务器: import socket #单进程服务器 实现多客户端访问 IO复用 #吧所有的客户端套接字 放在一个列表里面,一次又一次的便利过滤 server = socket.socket(sock ...

  2. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

  3. socket套接字编程

    一.概述 1.socket是一种进程间通信方式,既可以用于一台机器,也可以用于网络.常用语C/S模型. 2.可以跨越Windows和Linux操作系统,可以跨越不同语言. 3.注意网络字节序和主机字节 ...

  4. 网络编程初识和socket套接字

    网络的产生 不同机器上的程序要通信,才产生了网络:凡是涉及到倆个程序之间通讯的都需要用到网络 软件开发架构 软件开发架构的类型:应用类.web类 应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌 ...

  5. Python之异常处理和socket套接字连接7

    一.异常处理 1)异常处理的使用意义 什么是异常处理 异常是程序发生错误的信号,即程序一旦出错就会立刻产生一个异常,如果该异常没有被处理 那么异常就抛出来,程序的运行也随之终止 异常分为三部分: 异常 ...

  6. Python Web学习笔记之socket套接字

    套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信 ...

  7. 19 网络编程--Socket 套接字方法

    1.Socket(也称套接字)介绍 socket这个东东干的事情,就是帮你把tcp/ip协议层的各种数据封装啦.数据发送.接收等通过代码已经给你封装好了 ,你只需要调用几行代码,就可以给别的机器发消息 ...

  8. 19、网络编程 (Socket套接字编程)

    网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用层.传输层.网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解. 链路层:链路层是用于定义物理传输通道,通常是对某些 ...

  9. 31_网络编程(Socket套接字编程)_讲义

    今日内容介绍 1.网络三要素及传输协议 2.实现UDP协议的发送端和接收端 3.实现TCP协议的客户端和服务器 4.TCP上传文件案例 01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用 ...

随机推荐

  1. node.js+mongodb 爬虫

    demo截图: 本demo爬瓜子二手车北京区的数据 (注:需要略懂 node.js / mongodb 不懂也没关系 因为我也不懂啊~~~) 之所以选择爬瓜子二手车网站有两点: 一.网站无需登录,少做 ...

  2. 试题 E: 迷宫

    [问题描述]下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方.010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个 ...

  3. javascript任务队列

    摘自:https://www.cnblogs.com/liangyin/p/9783342.html,谢谢作者分享! 任务队列 所有任务可以分成两种,一种是 同步任务(synchronous),另一种 ...

  4. datatable 给某一列添加title属性

    简单描述:采用datatable拼接的表格,没有title属性,嗯就是这个情况,直接上代码 代码: //js代码$("#toAdd").click("click" ...

  5. python-初识python

    一.计算机的初步认识 硬件:内存,主板,CPU,硬盘,显卡,显示器等 内存: 优点:存取速度快 缺点:断电后数据会全部丢失 硬盘: 优点:断电后数据也会永久保存 缺点:存取速度远远慢于内存 1.操作系 ...

  6. 从svn迁移至Git并保留所有 commit 记录

    用户映射文件user.txt,等号左边为svn账号,右边为Git用户名和邮箱.注意:svn中有多少用户就要映射多少 test1=test1<147258369@qq.com>test2=t ...

  7. js 屏蔽政治关键字

    一般情况下,用户输入评论提交到后台的同时,在后台进行关键字过滤,昨天看到了一个js关键字过滤的方法,记录下. 方法很简单,先把需要过滤的关键字做成数组, 在for循环数组判断有没有匹配. ok,先来个 ...

  8. HDU - 6054 sa + 树状数组套线段树

    因为强制在线所以只能转成序列上的问题然后树套树了... #include<bits/stdc++.h> #define LL long long #define LD long doubl ...

  9. LOJ#3043.【ZJOI2019】 线段树 线段树,概率期望

    原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍. 题解 对于线段树上每一个节 ...

  10. pycharm的list中clear的应用

    #清空的意思 li = [11,22,33,44] li.clear() print(li) #输出[],就是把列表清空