我可以发送出去信息 但接收时就告诉我“在其上下文中,该请求的地址无效。”看网上说是因为程序执行了两次……想不明白为什么?小弟刚接触Socket 高手指点一下我的代码如下 高手帮一下
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;namespace DDN.NET.SocketCommunication
{
/// <summary>
/// NetOperate 的摘要说明。
/// </summary>
public class Sender
{
public Sender()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 给指定的IP和端口发送消息
/// </summary>
/// <param name="ip"></param>
/// <param name="port"></param>
/// <param name="message"></param>
/// <returns></returns>
public static string SendMessage(string ip,int port,string message)
{
//
//客户端按给定的IP地址和端口号发送信息
//
byte[] message_Send = System.Text.Encoding.ASCII.GetBytes(message.ToCharArray()); System.Net.IPEndPoint IP_SendTo = new IPEndPoint(System.Net.IPAddress.Parse(ip),port); Socket socket_send = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

try
{
socket_send.Connect(IP_SendTo);
}
catch(Exception ex)
{
return("\n" + ex.Source + ex.Message);
} try
{
if(!socket_send.Connected)
{
                    return ("\nCan't connect to " + ip + ":" + port);
}
else
{
//连接成功,发送消息
socket_send.Send(message_Send,message_Send.Length,SocketFlags.None);
return ("\nsend to " + ip + ":" + port + " at " + System.DateTime.Now.ToShortTimeString());
}
}
catch(Exception ex)
{
return("\n" + ex.Source + ex.Message);
}
finally
{
socket_send.Shutdown(SocketShutdown.Both); socket_send.Close();
}
}
}
public class Receiver 
{
//Thread mythread; //Socket socket;

public Receiver()
{
} /// <summary>
/// 服务器端接收来自客户端的消息,首先要绑定Socket与一个EndPort,然后侦听……
/// </summary>
/// <param name="ip"></param>
/// <param name="port"></param>
/// <returns></returns>
public static string RecieveMessage(string ip,int port)
{
//
//从给定的地址与端口读数据
//
//实例化Socket
System.Net.Sockets.Socket s =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //实例化EndPoint
System.Net.IPEndPoint IP_Server = new IPEndPoint(System.Net.IPAddress.Parse(ip),port); try
{//Socket绑定EndPoint
s.Bind(IP_Server);
}
catch(Exception ex)
{
return ("\n" + ex.Message);
} //侦听
s.Listen(10);
//侦听得到新的Socket
Socket s_recv = s.Accept(); //实例化接收字节数组
byte[] message_byte = new byte[1024];
//实例化接收字符串
string message_str = "";
//收到信息长度
int messageLength = 0; try
{
while(true)
{
messageLength = s_recv.Receive(message_byte,message_byte.Length,0); if(messageLength <=0)
break;
message_str += System.Text.Encoding.ASCII.GetString(message_byte,0,message_byte.Length);
}

}
catch(Exception ex)
{
return ("\n" + ex.Message);
}
finally
{
s_recv.Shutdown(SocketShutdown.Both);

s_recv.Close();
}

return message_str;
}
}
}