Страница: 1 |
Вопрос: прошу помоч ч чатом =) | Добавлено: 11.08.10 03:21 |
Автор вопроса: ![]() |
Imports System.Text Module Module1 Dim _HASHTABLE As New Hashtable Sub Main() Dim listner As New System.Net.Sockets.TcpListener(8888) Dim tcpCLIent As TcpClient Dim infiniteCounter As Integer Dim counter As Integer listner.Start() msg("Chat Server Started ....") counter = 0 infiniteCounter = 0 For infiniteCounter = 1 To 2 infiniteCounter = 1 counter = 1 tcpCLIent = listner.AcceptTcpClient() Dim bytesFrom(10024) As Byte Dim dataFromClient As String Dim networkStream As NetworkStream = tcpCLIent.GetStream() networkStream.Read(bytesFrom, 0, CInt(tcpCLIent.ReceiveBufferSize)) dataFromClient = System.Text.Encoding.Unicode.GetString(bytesFrom) dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")) _HASHTABLE(dataFromClient) = tcpCLIent broadcast(dataFromClient + " Соединён ", dataFromClient, False) msg(dataFromClient + " Присоединился ") Dim client As New handleClinet client.startClient(tcpCLIent, dataFromClient, _HASHTABLE) Next tcpCLIent.Close() listner.Stop() msg("exit") Console.ReadLine() End Sub Sub msg(ByVal mesg As String) mesg.Trim() Console.WriteLine(" >> " + mesg) End Sub Private Sub broadcast(ByVal msg As String, ByVal uName As String, ByVal flag As Boolean) Dim Item As DictionaryEntry For Each Item In _HASHTABLE Dim BSocket As TcpClient BSocket = CType(Item.Value, TcpClient) Dim BStream As NetworkStream = BSocket.GetStream() Dim BBytes As [Byte]() If flag = True Then BBytes = Encoding.Unicode.GetBytes(uName & " says : " & msg) Else BBytes = Encoding.Unicode.GetBytes(msg) End If BStream.Write(BBytes, 0, BBytes.Length) BStream.Flush() Next End Sub Public Class handleClinet Dim clientSocket As TcpClient Dim clNo As String Dim clientsList As Hashtable Public Sub startClient(ByVal inClientSocket As TcpClient, ByVal clineNo As String, ByVal cList As Hashtable) clientSocket = inClientSocket clNo = clineNo clientsList = cList Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat) ctThread.Start() Dim a As Byte a = 4 End Sub Private Sub doChat() Dim infiniteCounter As Integer Dim requestCount As Integer Dim bytesFrom(10024) As Byte Dim dataFromClient As String 'Dim sendBytes As [Byte]() 'Dim serverResponse As String 'Dim rCount As String requestCount = 0 For infiniteCounter = 1 To 2 infiniteCounter = 1 Try requestCount = requestCount + 1 Dim networkStream As NetworkStream = clientSocket.GetStream() networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) dataFromClient = System.Text.Encoding.Unicode.GetString(bytesFrom) dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")) msg("From client - " & clNo & " : " & dataFromClient) 'rCount = Convert.ToString(requestCount) broadcast(dataFromClient, clNo, True) Catch ex As Exception MsgBox(ex.ToString) End Try Next End Sub End Class End Module ============================ народ, подскажите, что даёт фун-ция CType "BSocket = CType(Item.Value, TcpClient)" а то я голову сломал читая чё написано на MSDN |
Ответы | Всего ответов: 9 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 11.08.10 06:05 |
Кастует значение в хэш-таблице к TcpClient, вестимо |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #2 | Добавлено: 11.08.10 09:39 |
Лучше переделать на Dictionary, не нужно будет явные приведения делать |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #3 | Добавлено: 11.08.10 10:08 |
|
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ICQ: Skype: abc barman Вопросов: 3 Ответов: 17 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 11.08.10 12:49 |
ну он же бесконечным должен быть) |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ICQ: Skype: abc barman Вопросов: 3 Ответов: 17 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 11.08.10 12:51 |
и разницы в принципе никакой |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #6 | Добавлено: 11.08.10 13:43 |
разве что в том, что ты юзаешь в 10 раз больше кода? ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #7 | Добавлено: 11.08.10 14:07 |
AgentFire, молодец что заметил ![]() Вот рассово верный бесконечный цикл
|
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ICQ: Skype: abc barman Вопросов: 3 Ответов: 17 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 10.10.10 00:31 |
Я разобрался! Спс вам, профи) там ксать через массив можно в 100 раз проше сделать ![]() |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #9 | Добавлено: 10.10.10 09:38 |
![]() |
Страница: 1 |
|