Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabricioss

Erro "Only one usage of each socket address is normally permitted

Recommended Posts

Poderiam por favor me ajudar a eliminar o erro "Only one usage of each socket address is normally permitted".Estou criando um software de chat baseado em sockets. O erro aparece quando tento fechar o form do cliente enquanto ele está conectado ao server. Estou colando do código do client. O server está funcionando belezinha.Sugestões?using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.IO;using System.Threading;namespace ClientApp{ public partial class ClientAppForm : Form { private NetworkStream output; private BinaryWriter writer; private BinaryReader reader; private Thread readThread; private string message = ""; TcpClient client = new TcpClient(); public ClientAppForm() { InitializeComponent(); ClientAppForm.CheckForIllegalCrossThreadCalls = false; } protected void ClientAppForm_FormClosing(object sender, FormClosingEventArgs e) { System.Environment.Exit(System.Environment.ExitCode); } public void connectionButton_Click(object sender, EventArgs e) { readThread = new Thread(new ThreadStart(RunClient)); readThread.Start(); } public void RunClient() { // connect to server and display server-generated text //TcpClient client; // instantiate TcpClient for sending data to server try { displayTextBox.Text += "Attempting connection ...\r\n"; // Step 1: create TcpClient and connect to server //client = new TcpClient(); string serverapp = "127.0.0.1"; int port = 4999; client.Connect(serverapp, port); // Step 2: get NetworkStream associated with TcpClient output = client.GetStream(); inputTextBox.Enabled = true; connectionButton.Enabled = false; // create objects for writing and reading across stream writer = new BinaryWriter(output); reader = new BinaryReader(output); writer.Write("CLIENT>>> Connection successful.\r\n"); displayTextBox.Text += reader.ReadString(); // loop until server signals termination do { // Step 3: processing phase try { // read message from server message = reader.ReadString(); displayTextBox.Text += "\r\n" + message; } // handle exception if error in reading server data catch (Exception) { System.Environment.Exit(System.Environment.ExitCode); } } while (client.Connected); displayTextBox.Text = "Closing connection.\r\n"; connectionButton.Enabled = true; // Step 3: close connection client.Close(); output.Close(); writer.Close(); reader.Close(); } // handle exception if error in establishing connection catch ( Exception /*error*/ ) { //MessageBox.Show( error.ToString() ); //displayRichTextBox.Text = error.ToString(); displayTextBox.Text += "Could not establish connection ...\r\n\r\n"; } } private void sendButton_Click(object sender, EventArgs e) { writer.Write(inputTextBox.Text); displayTextBox.Text += "\r\n" + inputTextBox.Text; sendButton.Enabled = false; inputTextBox.Clear(); } }}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri onde eu estava errando. Na verdade o client estava ok. O problema era no server, eu estava tentando usar um socket enquanto outro já estava em uso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.