python小练习---TCP客户端

这是python黑帽子上的起始练习,我对其中的用到的函数做了注释,以便日后便于理解。

该程序可以访问百度,返回响应信息。

另外,我注释还有一部分UDP客户端的语句,TCP和UDP对比便于记忆。

# -*- coding:utf-8 -*-
# 创建客户端,类似于浏览器发送请求

import socket

target_host = "www.baidu.com" # 127.0.0.1
target_port = 80

# 建立一个socket对象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建TCP连接
# socket.AF_INET 使用标准的IPv4地址或者主机名
# socket.SOCK_STREAM 流式socket,应用于TCP
# socket.SOCK_DGRAM 数据报式socket,应用于UDP
# client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 创建UDP连接

# 连接客户端
client.connect((target_host,target_port))
# 连接到address处的套接字。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
# client.connect_ex(host,port) 成功返回0,失败返回error

# 发送一些数据
client.send(("GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n").encode())
# 发送TCP数据。将string中的数据发送到连接的套接字。
# 返回值是要发送的字节数量,该数量可能小于string的字节大小。
# UDP发送
# s.sendto(string[,flag],address)
# 将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
# client.sendto("AAABBBCCC",(target_host,target_port))

# 接收一些数据
response = client.recv(4096)
# s.recv(bufsize[,flag]) 接受TCP套接字的数据。
# 数据以字符串形式返回,bufsize指定要接收的最大数据量。
# flag提供有关消息的其他信息,通常可以忽略。
# UDP接收
# s.recvfrom(bufsize[.flag])
# 接受UDP套接字的数据。与recv()类似,但返回值是(data,address)。
# 其中data是包含接收数据的字符串,address是发送数据的套接字地址。
# data,addr = client.recvfrom(4096) 

print(response)
# print(data)
# 关闭连接
# client.close()

推荐这篇文章对socket介绍的很详细  http://blog.csdn.net/rebelqsp/article/details/22109925

时间: 2024-08-10 19:18:18

python小练习---TCP客户端的相关文章

python小练习---TCP服务器端

针对于上一篇分享python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html我继续按书中内容,向下进行这里需要强调一个事py3在使用 send() 和 recv() 的时候会出现TypeError: a bytes-like object is required, not 'str'解决方法:send() 里面的内容用 encode('utf-8') 编码发送recv() 用 decode('utf-8') 解码接收 好,

python socket之tcp服务器与客户端demo

python socket之tcp服务器与客户端demo 作者:vpoet 日期:夏季 server: # -*- coding: cp936 -*- ''' 建立一个python server,监听指定端口, 如果该端口被远程连接访问,则获取远程连接,然后接收数据, 并且做出相应反馈. ''' import socket if __name__=="__main__": print "Server is starting" sock = socket.socket

[Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)

简单得不能再简单的需求: 简单模拟TCP客户端与服务端的一次连接和通信,客户端发出一个消息,服务端回馈一个消息 自己第一次编写的代码: Client: class TcpClient1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",10010); OutputStream out=s.getOutputStream(); out.write(&quo

python网络编程——TCP

<pre name="code" class="python"> 一.网络通信模式 对于网络通信,现在遵循的是TCP/IP协议组. 而现在设计的通信模式中,主要使用的是客户端/服务器编程,所谓的客户端就是我们用户所用的软件,而服务端则是程序开发人员根据客户端的需要设计的服务模式,为了是满足客户端的要求,实现和客户端进行正常通信. 二.套接字:通信的端点 对于tcp/Ip协议来说,它是一个多层协议族,分别是物理层,数据链路层,网络层,传输层,应用层.对于网

linux-socket tcp客户端服务器编程模型及代码详解

上一篇文章介绍了 TCP/IP相关协议,socket通信流程和涉及到的各种函数: Socket简单理解 本篇将具体解释tcp客户端服务器编程模型相关的代码 文章分为4个部分: 1. TCP客户端服务器编程模型流程图 2. 网络字节序与主机字节序 3. TCP编程的地址结构 4. 详细案例代码及解释 一: TCP客户端服务器编程模型流程图 上面两张图片将整个流程已经说明的很清楚了; 二: 网络字节序与主机字节序 字节序即是保存数据的方向方式, 分为 大端存储 和 小端存储; 其中 网络字节序 使用

python中的TCP及UDP

python中是通过套接字即socket来实现UDP及TCP通信的.有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字. TCP通信模型 创建TCP服务器 伪代码: ss = socket() # 创建服务器套接字 ss.bind() # 套接字与地址绑定 ss.listen() # 监听连接 inf_loop: # 服务器无限循环 cs = ss.accept() # 接受客户端连接 comm_loop: # 通信循环 cs.recv()/cs.send() # 对话(接收/发

Python Socket Programming 服务器/客户端

基于UDP/TCP的套接字编程demo UDP 客户端/服务器 一个简单的基于UDP协议的客户端和服务器应用的进程通信. 逻辑: 客户端会给服务器发送小写的英文字母,服务器接受后,把它转化成大写再返回给客户端,客户端输出这组数字.由于Python3已经明确区分了str类和bytes类,因此发送的是字节. UDP服务器: from socket import * udp_server_socket = socket(AF_INET, SOCK_DGRAM) udp_server_port = 96

python 网络通信协议/TCP,UDP区别

一.osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 协议具体内容 各层的功能简述: [1]物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特. [2]数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发