客户端部份代码如下:
bb = new byte[300];
// 连接服务器
tcpclnt = new TcpClient();
tcpclnt.Connect(serverip, serverport);
?sen = new ASCIIEncoding();
// 得到客户端的流
stm = tcpclnt.GetStream();
//连接数据库等与数据库相关的内容
try
{
while(true)
{
readeraccess = commandaccess.ExecuteReader();
while (readeraccess.Read())
{
str = readeraccess.GetString(0).ToString();
// 发送字符串
ba = asen.GetBytes(str);
Console.WriteLine("..传输中.."+ba.Length);
stm.Write(ba, 0, ba.Length);
// 接收从服务器返回的信息
k = stm.Read(bb, 0, 100);
// 输出服务器返回信息
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(bb[i]));
}
}
}
// 关闭客户端连接
tcpclnt.Close();
connaccess.Close();//关闭和数据库的连接
}
catch (Exception e1)
{
Console.WriteLine("Error..... " + e1.StackTrace);
}
服务器端主要代码如下:
try
{
// 把IP地址转换为IPAddress的实例
IPAddress ipAd = IPAddress.Parse("127.0.0.1");
// 初始化监听器, 端口为8001
TcpListener myList = new TcpListener(ipAd, 8001);
// 开始监听服务器端口
myList.Start();
// 输出服务器启动信息
Console.WriteLine("在8001端口启动服务...");
Console.WriteLine("本地节点为:" + myList.LocalEndpoint);
Console.WriteLine("等待连接.....");
// 等待处理接入连接请求
// 新建立的连接用套接字s表示
Socket s = myList.AcceptSocket();
while (true)
{
Console.WriteLine("连接来自 " + s.RemoteEndPoint);
// 接收客户端信息
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("已接收...");
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(b[i]));
}
// 处理客户端请求,给客户端回应
ASCIIEncoding asen = new ASCIIEncoding();
s.Send(asen.GetBytes("The string was recieved by the server."));
Console.WriteLine("\n已发送回应信息");
}
// 善后工作,释放资源
s.Close();
myList.Stop();
}
catch (Exception e)
{
Console.WriteLine("Error1..... " + e.StackTrace);
}
问题为什么:当客户端当传递完所有数据表记录的时候提示:
未处理的异常: System.Net.Sockets.SocketException: 由于目标机器积极拒绝,无法连接。
在 System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
在 client.Program.Main() 位置 D:\test\client1\client\Program.cs:行号 110