请教关于Socket连接问题

haoyiguo 2004-10-04 06:39:29
请问:
有两台电脑A和B,可不可以在A中指定[本地端口]连接到[B的IP和端口],
或者A自己得到连接的[本地端口],
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoyiguo 2004-10-06
  • 打赏
  • 举报
回复
ding
BeginnerBBB 2004-10-05
  • 打赏
  • 举报
回复
haoyiguo 2004-10-05
  • 打赏
  • 举报
回复
你们所说是不是这样
private void Listen()
{
try
{
tcpl = new TcpListener(5656);
tcpl.Start();
statusBar1.Text = "正在监听...";

while(listenerRun)
{
Socket s = tcpl.AcceptSocket();
Byte[] stream = new Byte[80];
int i=s.Receive(stream) ;
string message = System.Text.Encoding.UTF8.GetString(stream);
richTextBox1.AppendText(message);
}
}
catch(System.Security.SecurityException)
{
MessageBox.Show("防火墙安全错误!","错误",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
catch(Exception)
{
statusBar1.Text = "已停止监听!";
}
}

private void Send()
{
try
{
string msg = "<"+textBox3.Text+">"+textBox2.Text;
TcpClient tcpc = new TcpClient(textBox1.Text, 5656);
NetworkStream tcpStream = tcpc.GetStream();

StreamWriter reqStreamW = new StreamWriter(tcpStream);
reqStreamW.Write(msg);
reqStreamW.Flush();
tcpStream.Close();
tcpc.Close();
richTextBox1.AppendText(msg);
textBox2.Clear();
}
catch(Exception)
{
statusBar1.Text = "目标计算机拒绝连接请求!";
}
}
但是如果中间有NAT转换(在网上看到的 http://www.ppcn.net/show.aspx?id=1306&cid=2 )
比如A使用端口[P1]连接B端口[P2]然后B又连接A端口[P1]这时A怎么知道要侦听那个端口侦听
xinbin1122 2004-10-04
  • 打赏
  • 举报
回复
两方面必须协同操作,一台打开端口开始侦听,最好是单独开一个线程,另一台过来请求
greystar 2004-10-04
  • 打赏
  • 举报
回复
一个在本地侦听。一个去连接对方。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧