socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法
tcp服务器
#coding=utf-8
'''
这里是tcp服务器端,要先启动
'''
import socket
import threading bind_ip = "0.0.0.0"
bind_port = 9999 '''
"0.0.0.0"
在服务器端它表示
本机上的所有IPV4地址,如果一个服务有多个IP地址(192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那么我们无论是通过IP192.168.1.2还是10.1.1.12都是可以访问该服务的。
在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
''' # 创建服务器端的套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((bind_ip,bind_port)) server.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("这里是服务器端!")
'''
getpeername()用于得到与某个套接字关联的外地协议地址,说白了就是得到客户端
'''
print client_socket.getpeername()
client_socket.close() while True: client,addr = server.accept() print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) # 用多线程
client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start()
tcp客户端:
#coding=utf-8
'''
这里是tcpd的客户端
需要服务器端先打开端口
'''
import socket
# 创建套接字对象 确定要连接的服务器
# target_host=input("请输入目标ip:")
# # print target_host
# target_port=input("请输入目标端口:")
target_host="127.0.0.1"
target_port=9999
clinet = socket.socket(socket.AF_INET,socket.SOCK_STREAM) clinet.connect((target_host,target_port))
clinet.send("这里是tcp客户端")
response = clinet.recv(4096)
print response
udp客户端:
#coding=utf-8
'''
这里是udp的客户端
需要服务器端先打开端口
'''
import socket target_host="127.0.0.1"
target_port=9999
clinet = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) clinet.sendto("这里是udp客户端",(target_host,target_port))
response,addr = clinet.recvfrom(4096)
print "udp客户单开始执行"
print response
print addr
udp服务器:
# coding=utf-8
'''
import socket
import threading
from time import *
bind_ip = "0.0.0.0"
bind_port = 9999 # 创建服务器端的套接字
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind((bind_ip, bind_port)) print "[*] Listening on %s:%d" % (bind_ip, bind_port) while True: data,addr=server.recvfrom(1024)
server.sendto("这里是udp客户端")
print "接收:",data server.close()
待完善
socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法的更多相关文章
- python网络编程socket编程(TCP、UDP客户端服务器)
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...
- TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的使用 框架源码结构 补充说明 源码地址 说明 之前有好几篇博客在讲TCP/UDP通信方 ...
- Linux系统编程(37)—— socket编程之UDP服务器与客户端
典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...
- Linux系统编程(32)—— socket编程之TCP服务器与客户端
TCP协议的客户端/服务器程序的一般流程 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后, ...
- TCP/UDP客户端
Python 网络编程----模块socekt 在渗透测试的过程中,经常会遇到需要创建一个TCP客户端来连接服务器.发送垃圾数据.进行模糊测试活进行其他任务的情况. 简单的TCP客户端代码: #!/u ...
- 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
[转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...
- TCP/IP网络编程之基于UDP的服务端/客户端
理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...
- Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源
时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了.旧版本1:http://www.qtcn.org/bbs/ ...
- Linux系统编程(34)—— socket编程之TCP服务器与客户端的交互
前面几篇中实现的client每次运行只能从命令行读取一个字符串发给服务器,再从服务器收回来,现在我们把它改成交互式的,不断从终端接受用户输入并和server交互. /* client.c */ #in ...
随机推荐
- 使用Logistic Regression Algorithm进行多分类数字识别的Octave仿真
所需解决的问题是,训练一个Logistic Regression系统,使之能够识别手写体数字1-10,每张图片为20px*20px的灰度图.训练样例的输入X是5000行400列的一个矩阵,每一行存储一 ...
- C#递归加载目录树
/// 获取目录管理信息集合 /// </summary> /// <returns></returns> public List<CatalogTree&g ...
- EasyUI日期控件获值和赋值
一,获值 1.$("#id").datebox('getValue') 2.$("input[name='mydate']").val() 参考:http:// ...
- 基于Select模型的Windows TCP服务端和客户端程序示例
最近跟着刘远东老师的<C++百万并发网络通信引擎架构与实现(服务端.客户端.跨平台)>,Bilibili视频地址为C++百万并发网络通信引擎架构与实现(服务端.客户端.跨平台),重新复习下 ...
- Netty内存池及命中缓存的分配
内存池的内存规格: 在前面的源码分析过程中,关于内存规格大小我们应该还有些印象.其实在Netty 内存池中主要设置了四种规格大小的内存:tiny 是指0-512Byte 之间的规格大小,small 是 ...
- Linux忘记密码怎么办
重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面 在 linux16 参数这行的最后面追加"rd.break"参数,然后按下 Ctrl + X 组合 ...
- NEO4J -模糊查询
模糊查询 match(emp) where emp.name =~'.*haha.*' return emp 现有节点创建关系 MATCH (cust:Customer),(cc:CreditCard ...
- k8s常用笔记
安装docker // 安装docker $ yum install -y docker-ce // 开机启动 && 启动服务 $ systemctl enable docker &a ...
- Java 8实战之读书笔记一:内容简介
本书的主要内容如下: 如何使用Java 8新增的强大特性 如何编写能有效利用多核架构的程序 重构.测试和调试 怎样高效地应用函数式编程 目录: 第一部分 基础知识 第1 章 为什么要关心Jav ...
- linux中设置虚拟域名
一.打开tomcat安装目录下conf/server.xml这个文件在server.xml文档中找到 </Engine></Service> 接着添加上面添加以下内容(暂时先说 ...