私のコードに何が間違っているかを知ることに疲れています...私を助けてください!TCP接続に失敗しました
LANのサーバークライアント間にTCP接続を作成しようとしています。何が起こるかは、クライアントが接続しようとするとプログラムがクラッシュすることです。 コードを参照してください。
public void Go()
{
if (whatjob == true)
{
IPEndPoint server_ipEndPoint = new IPEndPoint(IPAddress.Any, PortNum);
server_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server_socket.Bind(server_ipEndPoint);
try
{
server_socket.Listen(1);
server_GotClient = server_socket.Accept();
}
catch (SocketException e)
{
MessageBox.Show("Unable to listen...");
MessageBox.Show(e.ToString());
}
reading = new Thread(new ThreadStart(this.get_msg));
reading.Start();
}
if (whatjob == false)
{
IPEndPoint client_ipEndPoint = new IPEndPoint(IPAddress.Parse(IpAddress), PortNum);
client_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
client_socket.Blocking = true;
client_socket.Connect(client_ipEndPoint); //here it stops execution
//client_socket.BeginConnect(client_ipEndPoint, new AsyncCallback(NowConnected), client_socket);
}
catch (SocketException e)
{
MessageBox.Show("Unable to connect...");
MessageBox.Show(e.ToString());
return;
}
reading = new Thread(new ThreadStart(this.get_msg));
reading.Start();
}
whatjobがブール値である...本当の意味は、サーバー・ジョブと偽の手段は、クライアントの仕事を行う
この機能は、チャットウィンドウの内部のWindowsフォームです。それはclient_socket.connect(ipendpoint)まで到達したとき、それがクラッシュしても、チャットウィンドウdeformatedさ...
スレッド機能
public void get_msg()
{
byte[] byte_message = new byte[1000];
string string_message = null;
int x = 0;
while (true)
{
if (server_GotClient != null)
{
x = server_GotClient.Receive(byte_message);
}
if (client_socket != null)
{
x = client_socket.Receive(byte_message);
}
if (x != 0)
{
string_message = Encoding.ASCII.GetString(byte_message);
this.richTextBox_GetMessage.Invoke(new MethodInvoker(delegate
{
richTextBox_GetMessage.Text = richTextBox_GetMessage.Text + "\nFriend: " + string_message;
}));
}
x = 0;
}
server_socket.Close();
}
このコードについて助けてください。 さらに追加するには、私は非同期技術の知識がない、簡単な方法で私を助けてください。
例外はありますか? –