模拟socket请求代码如下
public class HttpTest {
public static void main(String[] args) throws Exception, IOException {
Socket socket = new Socket("www.baidu.com",80);
OutputStream os = socket.getOutputStream();
StringBuffer sb = new StringBuffer();
sb.append("GET https://www.baidu.com/ HTTP/1.1\r\n");
sb.append("Host: www.baidu.com\r\n");
sb.append("\r\n");
byte[] bytes = sb.toString().getBytes();
os.write(bytes);
InputStream iStream = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bss = new byte[1024];
int len = -1;
while((len = iStream.read(bss)) != -1){
baos.write(bss,0,len);
}
System.out.println(new String(baos.toByteArray(), "gbk"));
socket.close();
}
}
这里的问题是为什么要new一个字符串时要用“gbk“编码。这是因为虽然我的eclipse默认编码是utf-8但是我的系统的编码字符集是gbk,socket连接得到数据用ByteArrayOutputStream接受,不管对面用的什么编码发送数据,系统的socket是会将数据转化为gbk编码的字节流。而ByteArrayOutputStream不加修饰的接受这些字节流。因此new字符串的时候要用”gbk“编码。但是eclipse编辑设置的是utf-8那显示的时候不会出错吗?其实new字符串可以看成用什么编码方式解读这些字符串。比如值为46018的两个字节用gbk解读那就是“陈”,那虚拟机?用的是utf-8编码,就会自动翻译成9648存储并展示
相关推荐
在Android平台上,我们可以利用Socket编程来模拟一个简单的HTTP服务器,以提供本地文件系统中的资源,如HTML文件,供外部设备(如浏览器)访问。这个过程涉及到Android系统的网络权限管理、Socket编程以及HTTP协议的...
未经授权的访问可能会导致数据泄露、系统破坏等问题。因此,在实际应用中,需要采取安全措施,如使用加密通信、身份验证和权限控制等,以防止未授权的远程控制。 总结起来,这个项目展示了如何使用Socket实现简单的...
然而,基于Socket的RPC实现存在一些限制,如手动处理网络连接、数据编码解码等,这可能导致效率低下且易出错。因此,通常会考虑使用更高级的通信框架,如Netty。Netty是一个高性能、异步事件驱动的网络应用程序框架...
5. 将编码后的图像数据通过Socket的OutputStream发送给客户端。 客户端的实现则包括: 1. 创建Socket,指定服务器的IP地址和端口号,建立到服务器的连接。 2. 通过Socket的InputStream接收服务器发送的图像数据。 3...
在爬虫中,Socket用于创建TCP连接,向服务器发送HTTP请求,接收返回的HTML数据。通常,我们需要设置HTTP头信息,比如User-Agent,以模拟浏览器行为。 3. **HTTP协议**:理解HTTP协议是爬虫开发的关键。HTTP是互联网...
- **线程安全**:如果多线程访问Socket,需要确保数据收发过程的线程安全,避免数据混乱。 7. **调试与测试**: - **日志记录**:在开发过程中,记录网络通信的日志可以帮助排查问题,了解数据传输的状态。 - **...
通过以上步骤设置后,LoadRunner将能够正确识别和处理UTF-8编码的网页内容,避免字符乱码问题。 #### 三、HTML-based script与URL-based script的区别是什么? LoadRunner提供了两种不同的录制模式:...
在IT领域,远程桌面共享是一种常见且实用的技术,它允许用户通过网络访问并控制其他计算机的桌面环境。本文将深入探讨使用C#编程语言实现远程桌面共享的关键知识点,并结合提供的"客户端"和"服务器端"源代码进行分析...
在这个场景中,`HttpClient`类用来模拟用户填写表单并提交数据的行为。 2. **urlencode**: - 在发送POST数据时,参数通常需要进行编码,以确保它们可以正确地在网络上传输。`urlencode`是PHP中的一个函数,用于对...
这里展示了一部分代码,用于模拟FTP数据交互过程,包括发送数据、接收数据以及对返回数据的处理等。 #### 四、总结 通过对LR性能计数器的深入分析,我们可以更准确地定位系统性能瓶颈,优化系统架构和提升用户...
FTP的设计目标是提高文件的可共享性,允许用户间接访问远程计算机,同时确保数据传输的可靠性和效率。该协议主要由两部分组成:控制连接和数据连接。 控制连接是FTP协议的核心部分,它在USER-PI(用户协议解释器)...
得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI...
2. **数据编码与解码**:音频、视频数据需要经过编码和解码才能在网络上传输。这可能涉及到像G711或H.264这样的编解码算法。 3. **实时传输协议(RTP)**:对于音频和视频流,可能使用RTP协议来确保数据的实时性和...
1. 访问 URL 读取返回结果 Urllib 库的 urlopen 函数可以用来访问 URL,并读取返回结果。该函数的第一个参数是 URL,第二个参数是要传送的数据,第三个参数是超时时间。其中,URL 是必须要传送的,data 和 timeout ...
4. **数据传输**:服务器将生成的响应编码为HTTP格式,然后通过`Socket`的输出流发送回客户端。响应通常包括状态码(如200表示成功,404表示未找到),响应头部,以及响应体(例如HTML内容)。 5. **连接关闭**:...
3. **读取服务器响应**:使用`recv()`函数接收服务器返回的数据,确认是否已成功登录。 4. **发送命令**:登录成功后,可以使用`send()`函数发送预设的命令。 5. **关闭连接**:完成操作后,需要关闭socket连接,...
这通常涉及到解码和编码特定的网络包,以及模拟必要的网络交互。 QQ代理可能涉及到TCP连接的建立和维持,以及数据包的格式转换,因为QQ可能使用非标准的HTTP头或者自定义的TCP握手过程。MSN代理则可能涉及MSN ...
这通常涉及到Socket编程,包括Socket的创建、数据的编码与解码等步骤。 HTTP请求则是我们最常见的网络请求类型,用于访问Web服务。在JMeter中,可以使用HTTP Request sampler直接进行HTTP(S)的请求,包括GET、POST...
在网络调试方面,QT网络模块提供了低级别的socket编程接口,允许开发者直接操作套接字进行数据传输。这个助手可能使用了QT的QNetworkAccessManager类,该类封装了HTTP、FTP等网络协议,使得发送HTTP请求或接收响应变...
如Python爬虫、Django框架获取IP地址、使用代理访问、访问Access数据库、微信小程序、王者荣耀刷金币以及投票刷票脚本,这些都是Python在实际应用中的各种实例,展示了Python在数据抓取、自动化和游戏辅助等方面的...