変更できないtcpclientアプリケーションからの出力を取得しようとしています。別のアプリケーションが接続できるので実行されていることはわかっていますが、VB6で記述されており、コードがありません。
これが私がこれまでに持っているものです:
public static void Main()
{
try
{
// Set the TcpListener on port 13000.
Int32 port = 5107;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
// TcpListener server = new TcpListener(port);
TcpListener server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
// Buffer for reading data
Byte[] bytes = new Byte[256];
String data = null;
// Enter the listening loop.
while(true)
{
Log("Waiting for a connection... ");
// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.
TcpClient client = server.AcceptTcpClient();
Log("Connected!");
data = null;
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
int i;
// Loop to receive all the data sent by the client.
while((i = stream.Read(bytes, 0, bytes.Length))!=0)
{
// Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Log(String.Format("Received: {0}", data));
// Process the data sent by the client.
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
// Send back a response.
stream.Write(msg, 0, msg.Length);
Log(String.Format("Sent: {0}", data));
}
// Shutdown and end connection
client.Close();
}
}
catch(SocketException e)
{
Log("SocketException: " + e.Message);
}
}
UPDATEはここで間違った行を持っ
ていました問題は、それが停止しTcpClient client = server.AcceptTcpClient();
、そこから何もしないことです。
他のアプリケーションは実行されていますが、接続されていません(?)と思います。私はこれまでこのようなtcpを使用したことがないので、何をしているのかわかりません。
ポートも正しいと思います。
クライアントが接続していない場合、クライアントからの出力を取得するにはどうすればよいですか?
=======編集=======
これは、私が情報を取得しようとしているアプリケーションのコードです。
Private Sub SendToPPS(ByVal GPS_Message As String)
If mbDebug_PPSGS Then
LogToFile("Starting Sub SendToPPS")
End If
Dim CloseSocket As Boolean
LogToFile("Starting SendToPPS")
If PPSIsRunning() Then
LogToFile("PPSIsRunning")
CloseSocket = False
If mbDebug_PPSGS Then
LogToFile("SendToPPS() PPS is Running. Sending: " & GPS_Message)
End If
' Don't try to send to PPS if PPS is not running
Try
' Create a TcpClient.
' Note, for this client to work you need to have a TcpServer
' connected to the same address as specified by the server, port
' combination.
If SocketClient Is Nothing Then
' The socket is not open yet. Open it now.
Dim port As Int32 = 5106
SocketClient = New TcpClient("localhost", port)
End If
If SocketClient2 Is Nothing Then
' The socket is not open yet. Open it now.
Dim port As Int32 = 5107
SocketClient2 = New TcpClient("localhost", port)
End If
' Translate the passed message into ASCII and store it as a Byte array.
Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(GPS_Message)
' Get a client stream for reading and writing.
Dim stream As NetworkStream = SocketClient.GetStream()
Dim stream2 As NetworkStream = SocketClient2.GetStream()
' Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length)
stream2.Write(data, 0, data.Length)
Catch err As ArgumentNullException
LogToFile("SendToPPS() ArgumentNullException: " & err.ToString)
CloseSocket = True
Catch err As SocketException
LogToFile("SendToPPS() SocketException: " & err.ToString)
CloseSocket = True
End Try
Else
CloseSocket = True
LogToFile("SendToPPS() PPS is Not Running.")
' PPS is not running
' Make sure Socket is closed
End If
If CloseSocket Then
If Not SocketClient Is Nothing Then
Try
SocketClient.Close()
Catch ex As Exception
LogToFile("SendToPPS() Closing Socket Exception: " & ex.ToString)
End Try
SocketClient = Nothing
End If
End If
If mbDebug_PPSGS Then
LogToFile("SendToPPS() Ending Sub SendToPPS")
End If
End Sub
=======編集#2 =======
これらのアプリケーションは両方とも同じコンピューターで実行されているため、127.0.0.1を使用しています。