我在学习TCP的时候,按书上敲代码,然后敲出来的程序就是连接失败。好伤心啊。由于代码太多,我就给出核心部分,请大神帮忙看看。
我开启服务器的程序,然后打开客户端,这客户端就是连接失败。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
namespace SyncTcpClient
{
public partial class frmSyncTcpClient : Form
{
private TcpClient tcpClient;
private NetworkStream networkStream;
private BinaryReader br;
private BinayWriter bw;
/*------------声明委托------------*/
private delegate void ShwStatusInfoCallBack(string str);
private ShwStatusInfoCallBack shwStatusInfoCallBack;
/*------------声明委托------------*/
public frmSyncTcpClient()
{
InitializeComponent();
/*----------回调函数----------*/
shwStatusInfoCallBack = new ShwStatusInfoCallBack(ShwStatusInfo);
/*----------定义委托----------*/
IPAddress[] serverIp = Dns.GetHostAddresses("");
tbxSrvIp.Text = serverIp[0].ToString();
tbxSrvIp.SelectAll();
tbxPort.Text = "51888";
}
//显示状态
private void ShwStatusInfo(string str)
{
toolStripStatusInfo.Text = str;
}
private void btnConnect_Click(object sender, EventArgs e)
{
Thread threadConnect = new Thread(ConnectoServer);
threadConnect.Start();
}
//发起连接请求
private void ConnectoServer()
{
try
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "正在连接...");
IPHostEntry remoteHost = Dns.GetHostEntry(tbxSrvIp.Text);
tcpClient = new TcpClient();
tcpClient.Connect(remoteHost.HostName, int.Parse(tbxPort.Text));
if (tcpClient != null)
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "连接成功!");
networkStream = tcpClient.GetStream();
br = new BinaryReader(networkStream);
bw = new BinaryWriter(networkStream);
}
}
catch
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "连接失败!");
}
}
}
}
我开启服务器的程序,然后打开客户端,这客户端就是连接失败。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
namespace SyncTcpClient
{
public partial class frmSyncTcpClient : Form
{
private TcpClient tcpClient;
private NetworkStream networkStream;
private BinaryReader br;
private BinayWriter bw;
/*------------声明委托------------*/
private delegate void ShwStatusInfoCallBack(string str);
private ShwStatusInfoCallBack shwStatusInfoCallBack;
/*------------声明委托------------*/
public frmSyncTcpClient()
{
InitializeComponent();
/*----------回调函数----------*/
shwStatusInfoCallBack = new ShwStatusInfoCallBack(ShwStatusInfo);
/*----------定义委托----------*/
IPAddress[] serverIp = Dns.GetHostAddresses("");
tbxSrvIp.Text = serverIp[0].ToString();
tbxSrvIp.SelectAll();
tbxPort.Text = "51888";
}
//显示状态
private void ShwStatusInfo(string str)
{
toolStripStatusInfo.Text = str;
}
private void btnConnect_Click(object sender, EventArgs e)
{
Thread threadConnect = new Thread(ConnectoServer);
threadConnect.Start();
}
//发起连接请求
private void ConnectoServer()
{
try
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "正在连接...");
IPHostEntry remoteHost = Dns.GetHostEntry(tbxSrvIp.Text);
tcpClient = new TcpClient();
tcpClient.Connect(remoteHost.HostName, int.Parse(tbxPort.Text));
if (tcpClient != null)
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "连接成功!");
networkStream = tcpClient.GetStream();
br = new BinaryReader(networkStream);
bw = new BinaryWriter(networkStream);
}
}
catch
{
statusStripInfo.Invoke(shwStatusInfoCallBack, "连接失败!");
}
}
}
}
