我把Socket的连接建成了数组。可是Socket连接进来后,我怎么把他分到某个线程,让他去侦听呢?谢谢!
Socket acceptSocket=myListen.AcceptSocket();
flashSocket[socketID]=acceptSocket;
//线程执行
subThread=new Thread(new ThreadStart(AcceptFlash));
subThread.Name="My" + threadID++;
subThread.Start();//开始此线程的执行
private void AcceptFlash()
{
//建立内部socket实例
Socket receiveSocket=flashSocket[socketID];
string endPointForClear=receiveSocket.RemoteEndPoint.ToString();
bool keepAlive=true;
string theTemp="";
//开始此实例的循环接受数据
while (keepAlive)
{
}
Socket acceptSocket=myListen.AcceptSocket();
flashSocket[socketID]=acceptSocket;
//线程执行
subThread=new Thread(new ThreadStart(AcceptFlash));
subThread.Name="My" + threadID++;
subThread.Start();//开始此线程的执行
private void AcceptFlash()
{
//建立内部socket实例
Socket receiveSocket=flashSocket[socketID];
string endPointForClear=receiveSocket.RemoteEndPoint.ToString();
bool keepAlive=true;
string theTemp="";
//开始此实例的循环接受数据
while (keepAlive)
{
}
解决方案 »
- 数据显示不出来?
- gridview数据绑定问题
- vs2003中的Application Center Test工具,在vs2005中怎么没有了?
- asp.net的最高境界
- 各位大侠,有没有办法让图片居于web窗口的右下角,不论屏幕分辨率是800*600还是1024*768
- 奇怪的问题,有可能是病毒的问题,有可能是系统的问题,但因该不会是程序代码的问题。不会,特求解!
- 数据库问题
- 如何实现谈出一个询问对话框?
- 自定义用户控件如何传值
- asp.net 如何调用adsi
- .NET(C#)怎样取出网站所在的服务器磁盘分区的总大小和剩余空间大小的信息?
- 用XML+XSLT转换成HTML,要如何解决类似<br>这类的HTML标记?
这个是连接监听
Listener = New TcpListener(Net.IPAddress.Parse("192.168.0.29"), 8617)
Listener.Start()
While ListenerRunning
Application.DoEvents()
SockCount = Sockets.Length
ReDim Preserve Sockets(SockCount)
Sockets(SockCount) = Listener.AcceptTcpClient ReDim Preserve MyThread(SockCount)
ReDim Preserve ListenClass(SockCount) ListBox1.Items.Add(SockCount) netStream = Sockets(SockCount).GetStream
wtStream = New StreamWriter(netStream)
wtStream.WriteLine("[1]" & SockCount)
wtStream.Flush() ListenClass(SockCount) = New My_Listen(Sockets, SockCount)
MyThread(SockCount) = New Thread(AddressOf ListenClass(SockCount).CheckMsg)
MyThread(SockCount).Start()
End While写一个类 把监听放在里面
Public Class My_Listen
Private SocketNum As Integer
Private Sockets() As TcpClient
Private netStream As NetworkStream
Private rdStream As StreamReader
Private wtStream As StreamWriter
Public running As Boolean = True Public Sub New(ByVal _socktes() As TcpClient, ByVal _sockunm As Integer)
SocketNum = _sockunm
Sockets = _socktes
End Sub Public Sub CheckMsg()
Dim i As Integer
While running
'If Sockets(i).GetStream.DataAvailable = True Then
netStream = Sockets(SocketNum).GetStream
rdStream = New StreamReader(netStream)
Dim str As String = rdStream.ReadLine
If str <> "" Then
MsgBox("来自" & SocketNum & "的消息:" & str)
Else
Dim o As New Form1
o.closetcp(SocketNum)
End If
End While
End Sub Public Sub CloseStream()
rdStream.Close()
netStream.Close()
End Sub
End Class
if(socketID>100)
{
threadID++;
subThread=new Thread(new ThreadStart(AcceptFlash));
subThread.Name="My" + threadID;
subThread.Start();//开始此线程的执行
}
else
{
}
假如象上面,当SocketID>100的时候开启一个新的线程。那么怎么控制这个新的线程去侦听100-200之间的Socket连接呢?
new Thread(new ThreadStart(AcceptFlash));
private void AcceptFlash()
{
while(true)
{
myListen.AcceptSocket();}
}
我是一个socket用的一个线程 socket用的阻塞
{
bool keepAlive=true;
//开始此实例的循环接受数据
while (keepAlive)
{
if (flashSocket[k].Poll(-1, SelectMode.SelectRead))
{
#region 接收数据的代码
}
}如上,每次有数据的时候为什么k都为1呢?