定义

  socket 是进程间的一种通信方式,可以实现不同主机间的数据传输

#写服务期端程序server.py

#实现服务器向客户端连接

 #!/usr/bin/env python
#coding:utf-8
import socket
s= socket.socket()
#127.0.0.1是本地主机,1234是随意设置到一个端口号
s.bind(('127.0.0.1',1234)) #绑定端口号为1234 #等待客户端连接
s.listen(5)
while True:
c, addr= s.accept() #连接后会得到connect和一个address
print u"连接地址为",addr
c.send("成功连接至服务器") #向客户端发送消息
c.close() #关闭连接

#效果:运行成功后cosole应该是没有任何显示的

#可能会出现端口被占用的情况

#解决措施

#再新建一个client.py

 #!/usr/bin/env python
#coding:utf-8
import socket
s=socket.socket()
s.connect(('127.0.0.1',1234))
#s.recv(1024)表示每次最多接收1024字节的数据
print s.recv(1024) #这里收到的就是server的s.send()中的内容
s.close()

#在客户端运行代码后发现服务器端和客户端console显示如下,表示连接成功

#服务器端成功打印出链接地址(server.py中的addr)

#模拟客户端向服务器端发送消息

#服务器端

 #!/usr/bin/env python
#coding:utf-8
import socket
s= socket.socket()
#127.0.0.1是本地主机,1234是随意设置到一个端口号
s.bind(('127.0.0.1',1234)) #绑定端口号为1234 #等待客户端连接
s.listen(5)
while True:
c, addr= s.accept() #连接后会得到connect和一个address
print u"连接地址为",addr
c.send("成功连接至服务器") #向客户端发送消息 #eval将收到的字符串转化为dict
dict=eval(c.recv(1024))
if dict:
print "收到的日记为",dict
print "日记的标题为",dict['title']
print "日记的内容为",dict['content'] c.close() #关闭连接

#客户端

 #!/usr/bin/env python
#coding:utf-8
import socket
s= socket.socket()
#127.0.0.1是本地主机,1234是随意设置到一个端口号
s.bind(('127.0.0.1',1234)) #绑定端口号为1234 #等待客户端连接
s.listen(5)
while True:
c, addr= s.accept() #连接后会得到connect和一个address
print u"连接地址为",addr
c.send("成功连接至服务器") #向客户端发送消息 #eval将收到的字符串转化为dict
dict=eval(c.recv(1024))
if dict:
print "收到的日记为",dict
print "日记的标题为",dict['title']
print "日记的内容为",dict['content'] c.close() #关闭连接

#先运行服务器端,再运行客户端

#效果

程序媛计划——python socket通信的更多相关文章

  1. 程序媛计划——python数据库

    #实例:用数据库存储日记,实现日记本功能 #流程 #创建数据库 #coding:utf-8 import sqlite3 connect=sqlite3.connect('test.db') conn ...

  2. 程序媛计划——python中级课时1

    class1 异常处理 #python会把标准输入的内容当作字符串处理,即使输入的是数字3也会转化为字符串’3’. n1 = raw_input() n2 = raw_input() print n1 ...

  3. 程序媛计划——python正则表达式

    #定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一串数字是否是电话号码. #原理 先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本 ...

  4. 程序媛计划——python初级课时3~5

    产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...

  5. 程序媛计划——python初级课时1~2

    在命令行中运行py文件:python 文件路径/文件名 python变量必须赋值后才能使用,因为py变量只有赋值后才会被创建. py可以同时给多个变量赋值:a,b,c = 10,20,'dfjkdj' ...

  6. 程序媛计划——python爬虫

    #用selenium打开百度首页 #第一次运行代码时应该在safari开发者选项中设置'allow remote automation' from selenium import webdriver ...

  7. 程序媛计划——python初级class5~13

    列表和元组都是可迭代对象(可以用于for in) 列表 [] #添加列表元素: list.append(argu) #修改列表: list[2] = 2017 #删除列表元素 Del list[2] ...

  8. Python Socket通信原理

    [Python之旅]第五篇(一):Python Socket通信原理   python Socket 通信理论 socket例子 摘要:  只要和网络服务涉及的,就离不开Socket以及Socket编 ...

  9. python - socket通信笔记

    参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...

随机推荐

  1. 对于Android开发,啥是高级工程师?

    最近一直在思考自己的技术方向.新的技术永远都是层出不穷,kotlin,flutter,小程序,轻应用等等,但是作为一个老鸟,新的东西,永远都是学不完的,想在新的技术上迭代学习出一个新高度,而增加自己的 ...

  2. oracle的分析函数over(Partition by...) 及开窗函数

        over(Partition by...) 一个超级牛皮的ORACLE特有函数. oracle的分析函数over 及开窗函数一:分析函数overOracle从8.1.6开始提供分析函数,分析函 ...

  3. loadrunner12.5-vugen回放脚本提示:URL=“http://www.testclass.net/js/scripts.js”的常规连接当前无套接字 (16 不足) 可用,是什么意思呢?怎么理解呢?

    会发生这个报错,是因为每个浏览器都有一个限制,检查哪个浏览器客户正在模拟, 通常只允许16个并发连接. 如果超过此超过接数,将显示该消息,通知您没有可用的连接. 而max connection的默认值 ...

  4. NFS 挂载 + autofs

    NFS:Network File System RPC:Remote Procedure Call 一.手动挂载  (mount -t nfs 服务端IP:/共享目录  /本地挂载点) 客户端 1.安 ...

  5. 数据库链接 mybatis spring data jpa 两种方式

    jdbc mybatis                     spring data jpa dao service webservice jaxrs     jaxws  springmvc w ...

  6. 去掉字符串前后的空格和Tab

    <script language=Javascript>function String.prototype.Trim() {return this.replace(/(^\s*)|(\s* ...

  7. NET(C#)连接各类数据库-集锦

    1.C#连接连接Access程序代码:------------------------------------------------------------------------------- u ...

  8. 594. Longest Harmonious Subsequence

    方法一:用一个map来辅助,代码简单,思路清晰 static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }( ...

  9. 2018.10.14 loj#516. DP 一般看规律(启发式合并)

    传送门 注意到一种颜色改了之后就不能改回去了. 因此可以启发式合并. 每次把小的合并给大的. 这样每个数最多被合并logloglog次. 如果维护一棵比较下标的平衡树的话,对于答案有贡献的就是每个数与 ...

  10. 2018.10.02 NOIP模拟 聚会(前缀和)

    传送门 今天的签到题. 直接前缀和处理一下就秒了. 然而考试的时候智障用线段树维护被卡成了30分,交到OJ一测竟然有100? 搞得我都快生无可恋了. 如果用线段树来做可以类比这道题的写法,直接维护区间 ...