通过tcpclient c#读取连接到tcplistener的HttpWebrequest写入的数据#
Read data written by HttpWebrequest connected to tcplistener via tcpclient c#
我在读取从客户端发布到服务器的数据时遇到了一些问题。
解释服务器代码
我创建了一个 TCP 侦听器,它会在一段时间内循环侦听任何客户端。
即,通过以下代码
listener = new TcpListener("127.0.0.1",3148);
TcpClient client = listener.AcceptTcpClient();//This code is called\hit when HttpWebrequest.GetrequestStream is called.
但是当我执行 Client.GetStream() 时 - 我没有在其中获取任何数据。
即,NetworkStream stream = Client.GetStream() - 网络流中没有可用数据
这是客户端代码:
Webrequest request = (HttpWebrequest)Webrequest.Create("http://127.0.0.1:3148/MovieData") ;
NetworkStream stream = request.GetRequestStream()
string Header = "\r\n Content-Type:MovieData \r\n";
byte[] headerbyte = Encoding.UTF8.GetBytes(header);
stream.Write(headerbyte,0,headerbyte.Length);
stream.close();
我在这里遗漏了什么吗,我的实现中在概念上是否遗漏了什么。
服务器和客户端连接到相同的端口和主机,但是写入客户端网络流的数据无法被服务器读取。
除非这些是自定义的 类 像这样更改拼写。
来自这里:
Webrequest request = (HttpWebrequest)Webrequest.Create("http://127.0.0.1:3148/MovieData")
为此:
WebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:3148/MovieData")
如果您打算在客户端和服务器之间通过 tcp 进行通信,请尝试仅使用 tcpClient 而不是 WebRequest。 Here and Here 是关于如何实现它的一些示例。
您似乎打开了一个 tcp 套接字并尝试使用 Http 连接到它。而是尝试像这样使用 tcp 连接到您的 tcp 套接字:
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("http://127.0.0.1", 3148);
然后您将使用 tcpclnt
在客户端和服务器之间发送和接收数据
Here 是关于 tcpclnt.Connect()
如何运作的 link
我在读取从客户端发布到服务器的数据时遇到了一些问题。
解释服务器代码
我创建了一个 TCP 侦听器,它会在一段时间内循环侦听任何客户端。
即,通过以下代码
listener = new TcpListener("127.0.0.1",3148);
TcpClient client = listener.AcceptTcpClient();//This code is called\hit when HttpWebrequest.GetrequestStream is called.
但是当我执行 Client.GetStream() 时 - 我没有在其中获取任何数据。 即,NetworkStream stream = Client.GetStream() - 网络流中没有可用数据
这是客户端代码:
Webrequest request = (HttpWebrequest)Webrequest.Create("http://127.0.0.1:3148/MovieData") ;
NetworkStream stream = request.GetRequestStream()
string Header = "\r\n Content-Type:MovieData \r\n";
byte[] headerbyte = Encoding.UTF8.GetBytes(header);
stream.Write(headerbyte,0,headerbyte.Length);
stream.close();
我在这里遗漏了什么吗,我的实现中在概念上是否遗漏了什么。 服务器和客户端连接到相同的端口和主机,但是写入客户端网络流的数据无法被服务器读取。
除非这些是自定义的 类 像这样更改拼写。
来自这里:
Webrequest request = (HttpWebrequest)Webrequest.Create("http://127.0.0.1:3148/MovieData")
为此:
WebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:3148/MovieData")
如果您打算在客户端和服务器之间通过 tcp 进行通信,请尝试仅使用 tcpClient 而不是 WebRequest。 Here and Here 是关于如何实现它的一些示例。
您似乎打开了一个 tcp 套接字并尝试使用 Http 连接到它。而是尝试像这样使用 tcp 连接到您的 tcp 套接字:
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("http://127.0.0.1", 3148);
然后您将使用 tcpclnt
在客户端和服务器之间发送和接收数据
Here 是关于 tcpclnt.Connect()
如何运作的 link