c#怎样用使用Tcp/Ip,Socket建立网络连接。就是启动服务器 进行监听 5

 我来答
源语梦Hg
2012-02-24 · TA获得超过521个赞
知道小有建树答主
回答量:670
采纳率:100%
帮助的人:276万
展开全部
public delegate void ServerEventHandler(object sender, ServerEventArgs args);
public class Server
{
public System.Net.Sockets.TcpListener listener;
public event ServerEventHandler serverHandler;
public void StartServer()
{
System.Text.Encoding enc = System.Text.Encoding.UTF8;
string host = System.Net.Dns.GetHostName();
int port = 2001;
System.Net.IPAddress ipAdd = null;
foreach (System.Net.IPAddress ipAddress in
System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList)
{
if (!ipAddress.IsIPv6LinkLocal)
ipAdd = ipAddress;
}
if (null == ipAdd) return;
listener = new System.Net.Sockets.TcpListener(ipAdd, port);
try
{
listener.Start();
}
catch
{
return;
}
while (true)
{
System.Net.Sockets.TcpClient tcp = listener.AcceptTcpClient();
System.Net.Sockets.NetworkStream ns = tcp.GetStream();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
byte[] resBytes = new byte[256];
int resSize;
do
{
resSize = ns.Read(resBytes, 0, resBytes.Length);
if (resSize == 0)
{
return;
}
ms.Write(resBytes, 0, resSize);
} while (ns.DataAvailable);
string resMsg = enc.GetString(ms.ToArray());
serverHandler(this, new ServerEventArgs(this.GetRemoteIP(tcp), resMsg));
ms.Close();
string sendMsg = resMsg.Length.ToString() + "characters";
byte[] sendBytes = enc.GetBytes(sendMsg);
ns.Write(sendBytes, 0, sendBytes.Length);
tcp.Close();
}
}
public void StopServer()
{
listener.Stop();
}
#region Get Remote IP and Port Number。
public string GetRemoteIP(System.Net.Sockets.TcpClient cln)
{
string ip = cln.Client.RemoteEndPoint.ToString().Split(':')[0];
return ip;
}
public int GetRemotePort(System.Net.Sockets.TcpClient cln)
{
string temp = cln.Client.RemoteEndPoint.ToString().Split(':')[1];
int port = System.Convert.ToInt32(temp);
return port;
}
#endregion
}

最简单的方法:
下一个代码运行起来慢慢改。。
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
聊无无
2012-03-02 · TA获得超过1206个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:219万
展开全部
首先执行socket.bind,绑定一个本地端口。
然后执行socket.listen,开始监听.
接下来如果是同步连接,执行socket.accept
如果是异步,执行socket.beginaccept
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜色华丽
2012-02-24 · TA获得超过664个赞
知道小有建树答主
回答量:800
采纳率:0%
帮助的人:403万
展开全部
开启一个线程,循环判断该sock绑定的端口是否有数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式