Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java socket server with VB.NET client?

Is this even possible? I have a java server program on a mac that I need to use to communicate back to a windows program. I have the client working in Java, but I can't seem to figure out how to get it to work in VB.net...

Here is the Java code...

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class socketClient {

public static void main(String[] args) {
    /**
     * Define a host server
     */
    String host = "10.1.1.194";
    /**
     * Define a port
     */
    int port = 19999;

    StringBuffer instr = new StringBuffer();
    String TimeStamp;
    System.out.println("SocketClient initialized");

    try {

         //Obtain an address object of the server
        InetAddress address = InetAddress.getByName(host);


        //Establish a socket connection
        Socket connection = new Socket(address, port);

        //Instantiate a BufferedOutputStream object  
        BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());

        /**
         * Instantiate an OutputStreamWriter object with the optional
         * character encoding.
         */
        OutputStreamWriter osw = new OutputStreamWriter(bos, "US-ASCII");

        TimeStamp = new java.util.Date().toString();
        String process = "Initiate file transfer on " + host + " port " + port
                + " at " + TimeStamp + (char) 13;

        //Write across the socket connection and flush the buffer
        osw.write(process);
        osw.flush();


        /**
         * Instantiate a BufferedInputStream object for reading /**
         * Instantiate a BufferedInputStream object for reading incoming
         * socket streams.
         */
        BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
        /**
         * Instantiate an InputStreamReader with the optional character
         * encoding.
         */
        InputStreamReader isr = new InputStreamReader(bis, "US-ASCII");


        //Read the socket's InputStream and append to a StringBuffer
        int c;
        while ((c = isr.read()) != 13) {
            instr.append((char) c);
        }

        //Close the socket connection.
        connection.close();
        System.out.println(instr);
    } 
    catch (IOException f) 
    {
        System.out.println("IOException: " + f);
    } 
    catch (Exception g) 
    {
        System.out.println("Exception: " + g);
    }
}
}

And here is my VB.NET code that I have so far...

Private clientSocket As Socket
Private host As String = "10.1.1.194"
Private port As Integer = 19999

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Try


        Dim add As New IPEndPoint(IPAddress.Parse(host), port)

        clientSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

        clientSocket.Connect(add)

        Dim netStream As New NetworkStream(clientSocket, True)



        Dim outstream As Byte() = System.Text.Encoding.ASCII.GetBytes("Initiate file transfer from " _
        & System.Environment.MachineName & " on " & host & " port " & port & " at " & TimeOfDay)


        netStream.Write(outstream, 0, outstream.Length)
        netStream.Flush()

    Catch ex As Exception
        Debug.Write(ex.Message)
    End Try


    End Sub

Now, if I run the vb code, it hangs... and nothing appears in my console on the mac (Like it does when I use the java client), however, when I close the VB code, I get the java.net.SocketException: Connection reset error, so I must be getting pretty close to figuring this out.

The thing is, I know almost nothing when it comes to socket programming, so if someone could push me in the right direction, it would be very appreciated!

like image 496
Calvin Avatar asked Dec 06 '25 10:12

Calvin


1 Answers

Is this even possible?

Yes.

I don't see you writing Carriage Return (13) character anywhere in your VB.NET example, yet you expect it to appear on a Java side in order to print something to the console.

like image 181
Alexander Pogrebnyak Avatar answered Dec 08 '25 00:12

Alexander Pogrebnyak



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!