C#我写了一个服务器客户端通过socket通信的程序,在本机上调试,IP和Port同为58.195.50.219,但是总出错?

求高手帮助,需要奖励的话支付宝支付。提示:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。192.168.1.219:12312客户端:namesp... 求高手帮助,需要奖励的话支付宝支付。
提示:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 192.168.1.219:12312
客户端:
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
//try
//{
int port = 12312;
string host = "192.168.1.219";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
c.Connect(ipe);
string sendStr = "hello!This is a socket test";
textBox1.Text = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
c.Send(bs, bs.Length, 0);
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine(recvStr);
c.Close();
}
}
}
服务器: public void sever()
{
try
{
int port = 12312;
string host = "58.195.50.219";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(ipe);
s.Listen(0);
Socket temp = s.Accept();
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine(recvStr);
this.textBox1.Text = recvStr;
string sendStr = "Ok!Sucess!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);
temp.Shutdown(SocketShutdown.Both);
temp.Close();
s.Shutdown(SocketShutdown.Both);
s.Close();
}
catch (ArgumentNullException es)
{
Console.WriteLine("ArgumentNullException: {0}", es);
}
catch (SocketException es)
{
Console.WriteLine("SocketException: {0}", es);
}
Console.ReadLine();
}
Client的IP也为58.195.50.219,上面写错了。
展开
 我来答
blakli123
2012-05-21 · TA获得超过272个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:249万
展开全部
服务器侦听的IP最好由代码获取本机IP,别写字符串
IPAddress IP=System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName())[0];
侦听最好使用回调方法,当客户端连接上来,调用回调函数,用TcpListener
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wywyyqh23501
2012-06-05
知道答主
回答量:12
采纳率:0%
帮助的人:13.5万
展开全部
本机测试的时候 将服务器和客户端IP都改成127.0.0.1。另外端口可以随便填写,只要在0到65535之间,但要客户端和服务器端口相同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
markqzzh
2012-05-21 · 超过11用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:32.3万
展开全部
int port = 12312;
端口冲突了,本机测试要用不同的端口。
追问
我已经将服务器端端口改为12313,两者IP一致,端口不一致了。但
c.Connect(ipe); 这一句总提示“由于目标计算机积极拒绝,无法连接。 58.195.50.219:12312”这是为何?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青城山道士
2012-05-21 · TA获得超过126个赞
知道小有建树答主
回答量:190
采纳率:66%
帮助的人:117万
展开全部
客户端的host的IP似乎应该填写 服务器的IP喔
追问
我已经将客户端IP修改为服务器IP了,两者一致。但
c.Connect(ipe); 这一句总提示“由于目标计算机积极拒绝,无法连接。 58.195.50.219:12312”这是为何?
追答
端口必须一致。因为对于TCP连接,客户端是自动创建临时端口的,不需要指定端口,只有服务器需要固定端口以接收客户端数据。所以创建的客户端连接的HOST和PORT应该指向的是服务器的IP和端口。另外,你的IP 58.195.50.219这个机器必须真实存在。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式