程序媛计划——python socket通信
定义
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通信的更多相关文章
- 程序媛计划——python数据库
#实例:用数据库存储日记,实现日记本功能 #流程 #创建数据库 #coding:utf-8 import sqlite3 connect=sqlite3.connect('test.db') conn ...
- 程序媛计划——python中级课时1
class1 异常处理 #python会把标准输入的内容当作字符串处理,即使输入的是数字3也会转化为字符串’3’. n1 = raw_input() n2 = raw_input() print n1 ...
- 程序媛计划——python正则表达式
#定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一串数字是否是电话号码. #原理 先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本 ...
- 程序媛计划——python初级课时3~5
产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...
- 程序媛计划——python初级课时1~2
在命令行中运行py文件:python 文件路径/文件名 python变量必须赋值后才能使用,因为py变量只有赋值后才会被创建. py可以同时给多个变量赋值:a,b,c = 10,20,'dfjkdj' ...
- 程序媛计划——python爬虫
#用selenium打开百度首页 #第一次运行代码时应该在safari开发者选项中设置'allow remote automation' from selenium import webdriver ...
- 程序媛计划——python初级class5~13
列表和元组都是可迭代对象(可以用于for in) 列表 [] #添加列表元素: list.append(argu) #修改列表: list[2] = 2017 #删除列表元素 Del list[2] ...
- Python Socket通信原理
[Python之旅]第五篇(一):Python Socket通信原理 python Socket 通信理论 socket例子 摘要: 只要和网络服务涉及的,就离不开Socket以及Socket编 ...
- python - socket通信笔记
参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...
随机推荐
- 给Array添加去重原型方法
Array.prototype.unique = function(){ var newArray = []; var oldArray = this; if(oldArray.length<= ...
- mybatis 和 mybatis-spring
一. 1. 实体bean package com.mybatisBean; public class User { private Integer id; private String name; ...
- 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时的最大贡献. 然后可以枚举端点转移. 当时口胡到这儿就不会了. ...
- 2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)
传送门 好题啊. 考虑前面的32分,直接维护后缀trietrietrie树就行了. 如果#号不在字符串首? 只需要维护第一个#前面的字符串和最后一个#后面的字符串. 分开用两棵trie树并且维护第一棵 ...
- 2018.07.22哨戒炮 II(树形dp)
哨戒炮 II 描述 你的防线成功升级,从原来的一根线变成了一棵树.这棵树有 N 个炮台,炮台与炮台之间 有 N-1 条隧道.你要选择一些炮台安装哨戒炮.在第 i 个炮台上安装哨戒炮得到的防御力为 vi ...
- 2018.07.13 [HNOI2015]落忆枫音(容斥原理+dp)
洛谷的传送门 bzoj的传送门 题意简述:在DAG中增加一条有向边,然后询问新图中一共 有多少个不同的子图为"树形图". 解法:容斥原理+dp,先考虑没有环的情况,经过尝试不难发现 ...
- 21 Survival of Desert Life 沙漠生命的延续
Survival of Desert Life 沙漠生命的延续 ① Some desert animals can survive the very strong summer heat and dr ...
- asp.net Hessian 服务的注册
Hessian服务端实现了IHttpHandle, 默认情况下是在Web.Config中的handles接点中注册,这样当有 很多实现时比较麻烦 这个时候可以实现IHttpHandleFactory注 ...
- IntelliJ IDEA 2017版 开发SpringBoot的全局配置文件使用
一.全局配置文件 描述: Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径 ...
- ENVI数据格式
选择一个或多个感兴趣的图层: 分类:目视解译.非监督分类 投影 哪里需要七参数,没有必要七参数吧?如果精度要求不高的话