我的程序主要是监听一个端口,实现点对点的传输,但是这在里我只能监听自己的IP也端口,当我把IP改为另一台计算机的IP时,就会出现
“在其上下文中,该请求的地址无效。”
这样的错误原码是从网上找的,小弟我对这方面不了解,希望大哥大姐们帮帮
/// <summary>
/// 根据给定的服务器和端口号建立连接
/// </summary>
/// <param name="strHost">服务器名</param>
/// <param name="iPort">端口号</param>
/// <returns></returns>
public static Socket ConnectToServer(string strHost, int iPort,TextBox getinfor)
{
try
{
GetInfor = getinfor;
IPAddress ipAddress = Dns.Resolve(strHost).AddressList[0];
IPEndPoint ipPoint = new IPEndPoint(ipAddress, iPort); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(ipPoint);
return s;
}
catch (Exception e)
{
throw (new Exception("建立到服务器的连接出错" + e.Message));
}
}
……
……
//下面是服务器端接受信息的代码:创建监听:
///<summary>
///再给定的主机和端口上创建监听程序
///</summary>
///<paramname="strAddress"></param>
///<paramname="iPort"></param>
public void BuildingServer(string strAddress, int iPort)
{
IPAddress ipAddress = Dns.Resolve(strAddress).AddressList[0];
try
{
listener = new TcpListener(ipAddress, iPort);
}
catch (Exception e)
{
AddInfo(e.Message);
}
} private void AddInfo(string p)
{
throw new Exception("The method or operation is not implemented.");
}
//开始监听:
///<summary>
///开始监听
///</summary>
private TextBox tbLog = null;
public void StartListen()
{
bool done = false;
listener.Start();//问题就是在这里出现的“**在其上下文中,该请求的地址无效**”
while (!done)
{
Socket s = listener.AcceptSocket();
if (s != null)
{
DealWithSocket dws = new DealWithSocket(s, this.tbLog);
StartThread(new ThreadStart(dws.DealWith));
}
}
}下面是我这样帮定IP与端口的
……
……
CommunClass db = new CommunClass();
string Bindhost = "192.168.0.249";//**当我把这个IP改为其他IP(192.168.0.246)时就会出现那个错误也就是说我监听不了别的计算机
int Bindport = 8080;
string filename = "";
public Form1()
{ InitializeComponent();
db.BuildingServer(Bindhost, Bindport);
ThreadStart threadDelegate = new ThreadStart(db.StartListen);
Thread newThread = new Thread(threadDelegate);
newThread.Start(); }
“在其上下文中,该请求的地址无效。”
这样的错误原码是从网上找的,小弟我对这方面不了解,希望大哥大姐们帮帮
/// <summary>
/// 根据给定的服务器和端口号建立连接
/// </summary>
/// <param name="strHost">服务器名</param>
/// <param name="iPort">端口号</param>
/// <returns></returns>
public static Socket ConnectToServer(string strHost, int iPort,TextBox getinfor)
{
try
{
GetInfor = getinfor;
IPAddress ipAddress = Dns.Resolve(strHost).AddressList[0];
IPEndPoint ipPoint = new IPEndPoint(ipAddress, iPort); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(ipPoint);
return s;
}
catch (Exception e)
{
throw (new Exception("建立到服务器的连接出错" + e.Message));
}
}
……
……
//下面是服务器端接受信息的代码:创建监听:
///<summary>
///再给定的主机和端口上创建监听程序
///</summary>
///<paramname="strAddress"></param>
///<paramname="iPort"></param>
public void BuildingServer(string strAddress, int iPort)
{
IPAddress ipAddress = Dns.Resolve(strAddress).AddressList[0];
try
{
listener = new TcpListener(ipAddress, iPort);
}
catch (Exception e)
{
AddInfo(e.Message);
}
} private void AddInfo(string p)
{
throw new Exception("The method or operation is not implemented.");
}
//开始监听:
///<summary>
///开始监听
///</summary>
private TextBox tbLog = null;
public void StartListen()
{
bool done = false;
listener.Start();//问题就是在这里出现的“**在其上下文中,该请求的地址无效**”
while (!done)
{
Socket s = listener.AcceptSocket();
if (s != null)
{
DealWithSocket dws = new DealWithSocket(s, this.tbLog);
StartThread(new ThreadStart(dws.DealWith));
}
}
}下面是我这样帮定IP与端口的
……
……
CommunClass db = new CommunClass();
string Bindhost = "192.168.0.249";//**当我把这个IP改为其他IP(192.168.0.246)时就会出现那个错误也就是说我监听不了别的计算机
int Bindport = 8080;
string filename = "";
public Form1()
{ InitializeComponent();
db.BuildingServer(Bindhost, Bindport);
ThreadStart threadDelegate = new ThreadStart(db.StartListen);
Thread newThread = new Thread(threadDelegate);
newThread.Start(); }
解决方案 »
- 水晶报表我实在不会打包发布, 我把VS下面的CRRedist2005_x86.msi拷贝给客户能行不?
- 我这里有套软件,如何知道服务器的WebServices地址呢?
- C#隐藏某个窗口
- datagridview自适应tabpage的宽度?
- 【用过ReportViewer高手进】C#代码填充Report1.rdlc上的table
- select NVL(count(*),0) from ressystem.rs_en_ddf reo where reo.equipname = '" + textBox1.Text + "'";
- 请教如何将doc/ppt的office文档按页转化为jpg格式的图片文件
- MDI窗口问题
- 使用c#,在文本文件中插入制表符(即一个tab),怎样写?
- C# TCP消息边界问题
- 请问如何实现类似MYSPACE的邮件邀请?高分求教!
- C# 点对点传输问题关于端口监听,请大哥大姐们帮帮小弟……
http://blog.csdn.net/3cts/archive/2007/08/08/1731596.aspx
看看吧
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Sockets;
using System.Threading;
using System.Net;namespace File_Transfer
{
public partial class Client : Form
{
//变量
private ThreadStart start;
private Thread listenThread;
static private bool m_bListening = false;
static private System.Net.IPAddress MyIP = System.Net.IPAddress.Parse("127.0.0.1");
static private TcpListener listener = new TcpListener(MyIP, 5567);
private String msg;
//初始化监听器
public Client()
{
InitializeComponent();
} private void Client_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
start = new ThreadStart(startListen);
listenThread = new Thread(start);
} private void button1_Click(object sender, EventArgs e)
{
String mystr = textBox1.Text;
string ipadd = textBox4.Text;
this.sendmymsg(ipadd);
}
public void sendmymsg(string IPaddress)
{
try
{
TcpClient client = new TcpClient(IPaddress, 5567);
NetworkStream sendStream = client.GetStream();
//StreamWriter writer = new StreamWriter(sendStream);
String msg = textBox1.Text;
Byte[] sendBytes = Encoding.Default.GetBytes(msg);
sendStream.Write(sendBytes, 0, sendBytes.Length);
//writer.Flush();
sendStream.Close();
client.Close();
textBox2.Text = "发送成功!!"; }
catch(System.Exception e)
{
textBox2.Text = e.ToString();
}
} private void textBox1_TextChanged(object sender, EventArgs e)
{
}//****************************** Server ******************************************
private void showmore()
{
textBox3.Text = msg;
}
private void button2_Click(object sender, EventArgs e)
{
if (m_bListening)
{
m_bListening = false;
label4.Text = "Server Idle...";
}
else
{
m_bListening = true;
listenThread.Start();
label4.Text = "Server Listening...";
}
}
private void startListen()
{
//textBox1.Text = "listening...";
listener.Start();
//接收数据
while (m_bListening)
{
//测试是否有数据
try
{
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
//StreamReader sr = new StreamReader(ns);//流读写器
//字组处理
byte[] bytes = new byte[1024];
int bytesread = ns.Read(bytes, 0, bytes.Length);
msg = Encoding.Default.GetString(bytes, 0, bytesread);
//显示
//MessageBox.Show(msg);
showmore();
ns.Close();
client.Close();
//清场 }
catch (Exception re)
{
MessageBox.Show(re.Message);
} }
listener.Stop();
//
} private void Client_FormClosed(object sender, FormClosedEventArgs e)
{
System.Environment.Exit(0);
} }
}
谢谢各位!!