定义

  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. 给Array添加去重原型方法

    Array.prototype.unique = function(){ var newArray = []; var oldArray = this; if(oldArray.length<= ...

  2. mybatis 和 mybatis-spring

    一. 1. 实体bean  package com.mybatisBean; public class User { private Integer id; private String name; ...

  3. 2018.10.22 bzoj4380: [POI2015]Myjnie(区间dp)

    传送门 区间dp好题. f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]最小值为kkk时的最大贡献. 然后可以枚举端点转移. 当时口胡到这儿就不会了. ...

  4. 2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)

    传送门 好题啊. 考虑前面的32分,直接维护后缀trietrietrie树就行了. 如果#号不在字符串首? 只需要维护第一个#前面的字符串和最后一个#后面的字符串. 分开用两棵trie树并且维护第一棵 ...

  5. 2018.07.22哨戒炮 II(树形dp)

    哨戒炮 II 描述 你的防线成功升级,从原来的一根线变成了一棵树.这棵树有 N 个炮台,炮台与炮台之间 有 N-1 条隧道.你要选择一些炮台安装哨戒炮.在第 i 个炮台上安装哨戒炮得到的防御力为 vi ...

  6. 2018.07.13 [HNOI2015]落忆枫音(容斥原理+dp)

    洛谷的传送门 bzoj的传送门 题意简述:在DAG中增加一条有向边,然后询问新图中一共 有多少个不同的子图为"树形图". 解法:容斥原理+dp,先考虑没有环的情况,经过尝试不难发现 ...

  7. 21 Survival of Desert Life 沙漠生命的延续

    Survival of Desert Life 沙漠生命的延续 ① Some desert animals can survive the very strong summer heat and dr ...

  8. asp.net Hessian 服务的注册

    Hessian服务端实现了IHttpHandle, 默认情况下是在Web.Config中的handles接点中注册,这样当有 很多实现时比较麻烦 这个时候可以实现IHttpHandleFactory注 ...

  9. IntelliJ IDEA 2017版 开发SpringBoot的全局配置文件使用

    一.全局配置文件 描述:     Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径 ...

  10. ENVI数据格式

    选择一个或多个感兴趣的图层: 分类:目视解译.非监督分类 投影 哪里需要七参数,没有必要七参数吧?如果精度要求不高的话