关于socket

在SOCKET里怎么没有事件?
那么如果对方发数据过来,我如果触发处理程序?
---------------------------------------------------------------

TcpListen
---------------------------------------------------------------

IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

Socket s = new Socket(lep.Address.AddressFamily,
SocketType.Stream,
ProtocolType.Tcp);
try{
s.Bind(lep);
s.Listen(1000);

while(true){
allDone.Reset();

Console.WriteLine("Waiting for a connection...");
s.BeginAccept(new AsyncCallback(Async_Send_Receive.Listen_Callback), s);

allDone.WaitOne();
}
}
catch (Exception e){
Console.WriteLine(e.ToString());
}

---------------------------------------------------------------

yes, you must create two socket;
The codes below show how to listen

public void StartListening()
{
string StrHostName= Dns.GetHostName();
Socket m_SockListener= new Socket(0, SocketType.Stream, ProtocolType.Tcp);
IPHostEntry IpEntry = Dns.GetHostByName (StrHostName);
IPAddress [] IpAddress= IpEntry.AddressList;
IPEndPoint LocEndpoint= new IPEndPoint(IpAddress[0], m_iPort);
m_SockListener.Bind(LocEndpoint);
m_SockListener.Blocking = true;
m_SockListener.Listen(-1);
m_SockListener.BeginAccept(m_AsyncCallbackAccept, m_SockListener);
}
public void OnAcceptRequest( IAsyncResult ar )
{
try
{
Socket SockListener = (Socket)ar.AsyncState;
Socket SockClient = SockListener.EndAccept(ar);
if (IsStopListening)\\IsStopListening 是一个bool变量,你可以通过设置它决定是否停止监听
{
...
SockListener.BeginAccept(m_AsyncCallbackAccept, SockListener);
}
}
catch(SocketException sockexcp)
{
...
}
}
---------------------------------------------------------------

呵呵.当然要开两个stocket了

就象电话一样,你有一部电话机,你的朋友也必须有一部

那样才可以通讯啊,当你在给你朋友打电话的时候你必须确定

你的朋友接到了你的电话,而你朋友给你的确定消息就是说"是的我是你的朋友"

你看stocket就这么简单.

详见:Windows Sockets 很不错的网络图书
http://www.cic.tsinghua.edu.cn/sys/book2/

Published At
Categories with Web编程
Tagged with
comments powered by Disqus