Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

sockets question

Status
Not open for further replies.

Autechre

MIS
Joined
Jul 30, 2002
Messages
3
Location
US
hi all - i have a java client and a c# server that need to communicate via sockets; the c# program uses TcpListener and Socket:

(C#)
{...
tcplis = new TcpListener( port );
tcplis.start();
while( true )
{
socket = tcplis.AcceptSocket();
if( socket.Connected == true )
{
// send some stuff
socket.Send(bByteBuffer);
//...
}
// now I need to RECEIVE some
// kind of reply from the Java
// client

socket.Receive(bByteBuffer2); // HERE #1
...}

the Java client looks something like this:

(Java)
{......
jsocket = new Socket( host, port );
jreader = new BufferedReader( new InputStreamReader(
jsocket.getInputStream());
jwriter = new PrintWriter(
jsocket.getOutputStream(),
true );

// read whatever the c# server sends this way:
while( jstring = jreader.readline())
{
if( jstring.compareTo( BYE_STRING )break;
// process input, .....
}

// now the client tries
// to send something to the server

jwriter.println( "Message....." ); // HERE #2
.......
}

well, my problem is that the server to client communication works fine; however, when the c# program gets to the Receive() part (HERE #1), it blocks indefinitely. single stepping through the Java code shows that it hangs there as well (at the jwriter.println() line, see HERE #2 -- it's not able to complete the Send to the server).

clearly, the C# socket does not switch from writing to listening mode for some reason. a socket.Poll( SelectWrite ) returns true. the only way i got it to work is by issuing a socket.Shutdown(Send) in right before HERE #1, but that is not acceptable since the c# will have to send more stuff after it receives the message from the client.

am i missing something there? should the socket in c# be initialized differently? i tried to do a socket.SetSocketOption( AcceptConnection, 1 ) but it returned an error (illegal level or value).

in a different situation, the c# server socket Receives at first just fine from a Java client but then it hangs just the same when trying to Send subsequently.

any ideas? thanks.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top