开发者

Multithreaded application with UDP + java

I am having problems with making multithreaded Datagram Sockets for learning purposes in java.

I have a Server class which spawn two threads Send and Recieve each of which currently have the same IP "localhost" for testing purposes and different ports for communication.

The other end I have a Client class that recieves the connection data from Send port and then gives a request for another packet through the Recieve port of the Server.

The problem I have is that when i run both of them the server sends the data and the client recieves it but the opposite direction....

So does anybody know what could be the problem....How can I run intercommunication processes between the client and the server on the same machine to see how it runs....

Here's a part of the code

Spawning two threads :-

    SendServer SendThread = new SendServer();
SendThread.run();
RecieveServer RecieveThread = new RecieveServer开发者_如何学C();
RecieveThread.run();

In the send thread I declare a DatagramPacket with localhost and a portno and similarly I do it for the recieve thread with some other port number

In the client side I write 2 sockets with the 2 ports and use one for sending and other for recieving...

What is the error in this program... Does the issue of threads running one at a time leads to not recieving at the server side ??

Please help..


If the server and client are going to be running on the same machine, they need to listen on different port numbers. It sounds like right now you have the receiver for both client and server using one port number and the sender for both client and server using another. That pairing is wrong. You want the the server's sender and receiver to use one port number and the client's sender and receiver to use a different port number.

Since this is multithreading, you might be having an issue where all responses coming from the server are destined for the same port. This would mean that you would have to have a serialized socket reader that is able to read in the packet and distinguish which thread it was supposed to go to. Otherwise, having to sockets listening on the same port would allow for one socket to read a packet off the line that was meant for the other thread's socket.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜