BLACKPYTHON学习(一)
C/S结构了解
所谓的C/S就是客户端(client)和服务器端(server)的简称,也就是在基于这个的基础上编写相关的代码;一个就是客户端一个就是服务端。
TCP(client) 客户端编写
#因为是在Python2.7的版本所以使用该socket包
import socket
#定义地址和端口
target_host = "127.0.0.1"
target_port = 9999
#编写套接字定义协议和tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#从包中调用connect函数链接服务器端口和地址
s.connect((target_host,target_port))
#向服务器端发送一条信息
s.send("I am TCP.")
#recv函数接收返回信息
response = s.recv(1024)
#打印返回信息
print response
这里有几点注意:socket里的两个参数AF_INET表示的是使用IPV4协议,SOCK_STREAM表示使用TCP协议
TCP(server) 服务端编写
import socket
import threading
#监听的端口和地址
bind_ip = "127.0.0.1"
bind_port = 9999
#同上
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#监听该端口和地址
s.bind((bind_ip,bind_port))
#最大连接数
s.listen(5)
print "[*] listening on %s:%d" %(bind_ip,bind_port)
#该函数是在连接成功的基础下才编写的
def handle_client(client_socket):
request = client_socket.recv(1024)
print "[*] Received:%s" % request
client_socket.send("ACK!")
client_socket.close() #关闭该服务器
while True:
#把接受到的数据放到addr数组里
client, addr = s.accept()
print "[*] Accepted connection from:%s:%d" %(addr[0], addr[1])
client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start()
代码实现过程中遇到的问题
代码实现过程中遇到了一个socket error[10061]的报错,具体查看了下源代码,发现是服务器端和客户端的端口号不一致导致的。但是也不知道为什么,本地使用ping监测该端口居然显示关闭的情况下,客户端也可以链接成功。有待进一步琢磨。
小结
简单来说,该两个模式下的代码思路
TCP client
- 创建地址和Ip
- 创建一个套接字定义协议
- 连接服务器
- 发送数据
- 接受回执信息
TCP server
- 创建套接字定义协议
- 监听端口
- 设定最大连接数
- 打印相关信息
BLACKPYTHON学习(一)的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- html端输入数据,利用qrcode.js生成打印二维码
在前端页面中导入qrcode.js(下载)和jquery.js(下载) index.html <script> function print() { var textbox1 = $('i ...
- MVC中使用EF的技巧集(一)
一.建好数据库后,向项目中添加数据模型. 1.右键点击“Models” 文件夹,选择“添加”,再选择“添加新项”. 2.在“添加新项”窗口,选择左边的“数据”,然后再在右边选择“ADO.NET 实体数 ...
- app数据加密方法
由于项目涉及到注册和登录,所以我了解一下现在app使用比较广泛的几种密码加密方法,可以当作参考,以下都是在python3.5的环境下使用这些算法的例子. 1.base64 Base64是一种基于64个 ...
- zookeeper for windows
1,安装java环境,安装完java之后,添加用户变量.并在命令行中测试 java -version . 2,下载zookeeper http://mirrors.shu.edu.cn/apache/ ...
- 浅谈MyBatis缓存
在谈论MyBatis的缓存之前,我们先说说它的延迟加载,所谓延迟加载, resultMap中的association和collection标签具有延迟加载的功能.延迟加载的意思是说,在关联查询时,利用 ...
- 学习python第三天单行函数
1.去重:distinct关键字 需求:查看公司一共有多少部门? select department_id from employees;此代码会查出107条记录,存在部门重复的问题! select ...
- C. Serval and Parenthesis Sequence 【括号匹配】 Codeforces Round #551 (Div. 2)
冲鸭,去刷题:http://codeforces.com/contest/1153/problem/C C. Serval and Parenthesis Sequence time limit pe ...
- 构建Vue开发环境
1.开发环境的准备工作 IDE 可以选择WebStom或者VisualStudio Code Node.js的安装 node + npm 调试环境 Google Chrome + Vue.js 2.什 ...
- 了解python wed 框架
随着人工智能发展,python这门编程语言也渐渐被人们熟知.至于python为什么能AL的时代脱颖而出可以看一下旁边的网址了解一下https://blog.csdn.net/lixingshi/art ...
- Spring事务(一)JDBC方式下的事务使用示例
摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 目录 一.创建数据表结构 二.创建对应数据表的PO 三.创建表与实体间 ...