接收数据方法:
/**/ /// <summary>
/// 接收数据的方法
/// </summary>
/// <param name="socket"> Socket连接 </param>
/// <param name="size"> 要接收的数据长度 </param>
/// <returns> 返回收到的字节数组 </returns>
public static byte [] ReceiveData(Socket socket, int size)
{
int total = 0 ; // 收到的总的字节数
int dataleft = size; // 剩余的字节数
byte [] data = new byte [size]; // 接收数据的数组
int rece = 0 ; // 收到的字节数
// 循环接收数据
while (total < size)
{
rece = socket.Receive(data,total,dataleft,SocketFlags.None);
// 如果收到的字节数为0,那么说明连接断开,返回空的字节数组
if (rece == 0 )
{
break ;
}
total += rece; // 收到的字节数长度++
dataleft -= rece; // 剩余的字节数--
}
return data; // 返回
}
接收数据方法重载:
public static byte [] ReceiveData(Socket socket)
{
StringBuilder header = new StringBuilder();
string headertext = "" ;
while ( true )
{
byte [] data = new byte [ 1 ];
// 接收一个字节
int rece = socket.Receive(data, 1 ,SocketFlags.None);
// 转换为char
char c = ( char )data[ 0 ];
header.Append(c);
// 检查是否到了包头末尾,如果到了包头末尾,那么停止
// 读取
if (header.ToString().IndexOf( " \r\n\r\n " ) > 0 )
{
string content = " CONTENT-LENGTH: " ;
int start = header.ToString().ToUpper().IndexOf(content);
headertext = header.ToString().Substring(start + content.Length);
int end = headertext.IndexOf( " \r\n " );
headertext = headertext.Substring( 0 ,end); // 包体长度
break ;
}
}
//
byte [] ds = ReceiveData(socket,Convert.ToInt16(headertext));
return ds;
}
分享到:
相关推荐
总之,通过Socket模拟HTTP协议头是一种学习网络编程、理解HTTP工作原理的有效方法。这种方式可以帮助开发者更好地控制网络请求,实现自定义功能,同时也可以在没有现成库支持的情况下进行低级网络通信。在实际项目中...
一些HTTP服务在IE浏览器使用XHR (Ajax)都可以访问...但是在Chrome 无法获得返回数据,返回报错信息都是: “Could not get any response”。 采用golang 开发使用Socket 模拟 http协议访问客户端,可以解决这个问题。
在C#编程语言中,使用Socket类可以实现底层的网络通信,包括模拟HTTP请求。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。Socket则提供了低...
1. **HTTP协议理解**:要通过Socket模拟HTTP协议,首先需要对HTTP协议有深入理解,包括请求方法(GET、POST等)、状态码、头部信息以及请求/响应的结构。 2. **Socket编程基础**:Socket编程涉及TCP/IP协议栈,包括...
这个过程涉及到Android系统的网络权限管理、Socket编程以及HTTP协议的理解。 首先,Android应用在处理网络相关的操作时,需要在`AndroidManifest.xml`文件中声明相应的权限,例如`INTERNET`权限和可能的`WRITE_...
采用JAVA的socket实现http协议,模拟浏览器访问服务端。
为了确保数据传输的安全性,HTTPS(安全套接层超文本传输协议)被引入,它是HTTP协议与SSL/TLS(安全套接层/传输层安全)协议的结合,通过加密传输数据,防止中间人攻击。 **模拟登录**: 在Web开发中,模拟登录...
【VC++ Socket发送Http协议Post数据包】是一个关于利用C++编程语言,通过Socket接口实现HTTP POST请求的示例项目。这个项目的核心是模拟HTTP客户端,向服务器发送带有特定数据的POST请求,以实现QQ登录的功能。在此...
"socket模拟http"是指使用Socket API来实现HTTP协议的功能。在本项目中,开发者使用了Visual C++ 6.0(VC6.0)作为开发工具,这是一款经典的C++集成开发环境。 HTTP(超文本传输协议)是互联网上应用最广泛的一种...
在实际应用中,Socket编程涉及的概念和技术还包括套接字的创建、绑定、监听、接受、连接、读写操作,错误处理,多线程/多进程并发处理,以及更高级的特性如TCP的长连接、HTTP/HTTPS协议等。熟练掌握Socket编程,将为...
本文将基于提供的标题“模拟http服务器(socket使用)”和描述,深入探讨如何使用Socket来构建一个简单的HTTP服务器。我们将涵盖以下几个关键点: 1. **HTTP协议基础**: HTTP(超文本传输协议)是互联网上应用最...
1. 创建SOCKET连接:使用`socket_create()`函数创建一个SOCKET,指定协议类型(通常是AF_INET,表示IPv4)和套接字类型(通常是SOCK_STREAM,表示TCP)。 2. 连接服务器:使用`socket_connect()`函数与服务器的IP...
Java Socket 实现简单模拟 HTTP 服务器 Java Socket 是 Java 编程语言中的一种网络编程技术,用于实现网络通信。通过使用 Java Socket,可以模拟 HTTP 服务器,来处理客户端的请求和响应。在本文中,我们将介绍如何...
3. **HTTP协议**:HTTP服务器响应客户端(通常是浏览器)的HTTP请求,返回HTML文档或者其他静态资源(如图片、CSS、JavaScript文件等)。HTTP请求由方法(GET、POST等)、URL、协议版本、头部和可能的主体组成,而...
通过研究这些文件,你不仅可以深入了解HTTP协议的工作原理,还能掌握如何使用C++和Delphi进行socket编程,实现自己的HTTP客户端或服务器。这是一个很好的学习资源,对于想深入理解和应用网络协议的开发者来说非常有...
当我们谈论"socket下载http"时,通常是指使用Socket编程来实现HTTP客户端,模拟浏览器发送HTTP请求到服务器,然后接收服务器返回的文件数据。HTTP请求通常包括方法(如GET或POST)、URL、协议版本、头部和可能的主体...
TCP调试助手是一款强大的工具,主要用于帮助开发者在设计和测试网络应用程序时模拟Socket服务器和客户端的行为。这个工具的核心功能是提供一个友好的界面,使得开发者无需编写额外的代码就能直观地理解TCP连接的工作...
在TCP/IP协议栈中,Socket提供了进程间通信的能力,无论是同一台机器还是不同机器上的进程,都可以通过Socket进行通信。 二、Socket类型 在Socket编程中,主要有两种类型的Socket:流式Socket(TCP)和数据报Socket...
Socket测试工具是网络编程中用于调试和检测TCP协议通信的重要辅助软件。在IT行业中,特别是在开发涉及网络通信的应用时,理解和使用这类工具至关重要。本文将深入探讨Socket测试工具的使用,TCP协议的基础知识,以及...
本文将深入探讨如何利用Socket技术实现点对点(P2P)的文件传输,并进一步探索如何将Socket通信转换为HTTP协议下的通信方式。 #### 二、Socket基础 在深入了解Socket转HTTP之前,我们首先回顾一下Socket的基础概念...