作者laevatain103 (RICO)
看板C_Sharp
标题[问题] 网路连线
时间Sat Aug 21 15:59:00 2010
我最近再玩网路连线时,遇到了一些问题
我的程式 可以自己连自己
可是却无法使用2台区网内的电脑进行连线
以下是我的CODE
************************
Server端
************************
private void button1_Click(object sender, EventArgs e)
{
threadA = new Thread(new ThreadStart(UDPserverBMP));
threadA.Start();
}
private void UDPserverBMP()
{
IPEndPoint ipeq = new IPEndPoint(IPAddress.Any, 5555);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ipeq);
while (true)
{
this.Invoke((shoeinformation)delegate
{
listBox1.Items.Add("Wait.....");
});
IPEndPoint Asender = new IPEndPoint(IPAddress.Any, 5555);
EndPoint Remote = (EndPoint)Asender;
byte[] tmp = new byte[50];
int recv = newsock.ReceiveFrom(tmp, ref Remote);
string str = (string)Deserialize(tmp);
try
{
byte[] data = new byte[109182];
Bitmap bmp = new Bitmap(160, 120);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Black);
data = Serialize(bmp);
newsock.SendTo(data, Remote);
data = null;
this.Invoke((shoeinformation)delegate
{
listBox1.Items.Add("___________________________");
listBox1.Items.Add("Okay!!!");
listBox1.Items.Add("GET"+str);
listBox1.Items.Add("接收时所用的");
listBox1.Items.Add(ipeq.Address.ToString());
listBox1.Items.Add(ipeq.Port.ToString());
listBox1.Items.Add("");
listBox1.Items.Add("___________________________");
});
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
***************************************
Client
***************************************
private void button1_Click(object sender, EventArgs e)
{
threadA = new Thread(new ThreadStart(UDPgetBMP));
threadA.Start();
}
private void UDPgetBMP()
{
try
{
byte[] data = new byte[1024 * 1024 * 8];
IPEndPoint ipep = new
IPEndPoint(IPAddress.Parse("192.168.1.3"), 5555);
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
string str="this is client";
byte[] buffer = Serialize((object)str);
server.SendTo(buffer, buffer.Length, SocketFlags.None,
ipep);
IPEndPoint Asender = new
IPEndPoint(IPAddress.Parse("192.168.1.3"), 5556);
EndPoint Remote = (EndPoint)ipep;
int rece = server.ReceiveFrom(data, ref Remote);
object tmp = Deserialize(data);
this.Invoke((showinformation)delegate
{
pictureBox1.Image = (Bitmap)tmp;
});
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
************************
在区网内进行连线时就无法连线
恳请各位大大们为我解答
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.128.137.182
1F:→ remmurds:你都已经用try catch了 好歹也PO个Exception的错误讯息呗 08/21 18:02
错误讯息是
远端主机已强制关闭一个现存的连线。...
※ 编辑: laevatain103 来自: 140.128.137.182 (08/21 18:35)
2F:推 boqCAE:为什麽选用UDP而不用TCP @@? 08/21 20:52
3F:→ pico2k:你可以下断点跑一次程式... 08/21 21:39
4F:→ wildcatqq:改用异步吧,改用socket 会比较好 09/04 14:10