【发布时间】:2020-01-19 15:23:41
【问题描述】:
为什么我收到这个:received string,当我发送这个?sended string
客户端应用的编码:
try
{
tcpclient.Connect("127.0.0.1", 80);
String str = "LOG" + Login.Text + "$" + hasło.Text;
Stream stm = tcpclient.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] buffer = asen.GetBytes(str);
stm.Write(buffer, 0, buffer.Length);
宿主鳕鱼:
try
{
string msg = "";
Socket socket = Listerner.AcceptSocket();
ASCIIEncoding asen = new ASCIIEncoding();
int x = socket.ReceiveBufferSize;
byte[] buffor = new byte[x];
int data = socket.Receive(buffor);
string wiadomość = Encoding.ASCII.GetString(buffor);
【问题讨论】:
-
因为
socket.RecieveBufferSize是缓冲区的大小,而不是数据的大小。int data是您收到的字节数,可以与ReceiveBufferSize一样高,但在这种情况下,它会更低,并且您应该为字节数组使用大小。如果发送的字节数超过缓冲区,则应再次读取,直到int data为 0。 -
请将发送和接收的字符串粘贴为文本,而不是图片。