主要问题是用该方法Encoding.ASCII.GetString(字节数组,0,长度)得到的字符串不是10,20,30,40,50,60,0
服务端代码
namespace socketserver
{
class Program
{
static void Main(string[] args)
{
Socket client;
int recv;
//byte[] message = new byte[1024];
Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPAddress adr = IPAddress.Parse("10.1.2.90");
IPEndPoint ep = new IPEndPoint(adr, 3000); ServerSocket.Bind(ep); //类似于客户机的connect()方法
ServerSocket.Listen(3); //开始监听 while (true)
{
if ((client = ServerSocket.Accept()) != null)
{
Console.WriteLine("连接上...发送数据....");
//欲发送的字节数组,以0为结束标记 byte[] message = { 10, 20, 30, 40, 50, 60, 0 };
//send方法返回发送的字节数
Console.WriteLine("总计将发送" + client.Send(message) + "个字节的数据");
Console.WriteLine("结束.");
Console.ReadLine();
client.Close();
break;
}
}
}
}
}
客户端代码
namespace socketclient
{
class Program
{
static void Main(string[] args)
{
Socket Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //建立客户端套接字
IPAddress adr = IPAddress.Parse("10.1.2.90");
IPEndPoint ep = new IPEndPoint(adr, 3000); Server.Connect(ep); //完成绑定 byte[] buffer = new byte[255];
String data = "";
int recv = 0;
recv = Server.Receive(buffer); if (recv > 0)
{
Console.WriteLine("连接上...");
Console.WriteLine("从服务器接收数据..."); data = Encoding.ASCII.GetString(buffer, 0, recv);
Console.WriteLine(data);
while (true)
{
String input;
input = Console.ReadLine();
if (input == "exit")
{
break;
}
Server.Send(Encoding.ASCII.GetBytes(input));
} Console.WriteLine("连接断开...");
Server.Shutdown(SocketShutdown.Both);
Server.Close();
} }
}
}
服务端代码
namespace socketserver
{
class Program
{
static void Main(string[] args)
{
Socket client;
int recv;
//byte[] message = new byte[1024];
Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPAddress adr = IPAddress.Parse("10.1.2.90");
IPEndPoint ep = new IPEndPoint(adr, 3000); ServerSocket.Bind(ep); //类似于客户机的connect()方法
ServerSocket.Listen(3); //开始监听 while (true)
{
if ((client = ServerSocket.Accept()) != null)
{
Console.WriteLine("连接上...发送数据....");
//欲发送的字节数组,以0为结束标记 byte[] message = { 10, 20, 30, 40, 50, 60, 0 };
//send方法返回发送的字节数
Console.WriteLine("总计将发送" + client.Send(message) + "个字节的数据");
Console.WriteLine("结束.");
Console.ReadLine();
client.Close();
break;
}
}
}
}
}
客户端代码
namespace socketclient
{
class Program
{
static void Main(string[] args)
{
Socket Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //建立客户端套接字
IPAddress adr = IPAddress.Parse("10.1.2.90");
IPEndPoint ep = new IPEndPoint(adr, 3000); Server.Connect(ep); //完成绑定 byte[] buffer = new byte[255];
String data = "";
int recv = 0;
recv = Server.Receive(buffer); if (recv > 0)
{
Console.WriteLine("连接上...");
Console.WriteLine("从服务器接收数据..."); data = Encoding.ASCII.GetString(buffer, 0, recv);
Console.WriteLine(data);
while (true)
{
String input;
input = Console.ReadLine();
if (input == "exit")
{
break;
}
Server.Send(Encoding.ASCII.GetBytes(input));
} Console.WriteLine("连接断开...");
Server.Shutdown(SocketShutdown.Both);
Server.Close();
} }
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货