c#与java通过socket通信

4 篇文章 0 订阅

说一下我是用JAVA做Server端,c#写的WINFORM做CLIENT端。
JAVA这边是TOMCAT做容器。
当我的tcpclient连接成功后,开始发送数据,,,,如果只发送数据,不接收server端的确认接收数据正常的信息(即一个"login_ok"的字符串)话是没有任何问题的,当在发送数据后加入接收SERVER返回的确认信息时就会出现“无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。”。原因是当client加入接收数据时server就会一直处于等待接收信息的状态,不往下执行。下面贴出代码片段。请大大们帮忙解释下,并给些建议。

server:
Java code
        
        
public void handleConnection(Socket connection) { System.out.println( " 客户: " + connection.getInetAddress() + " 在时间: " + Calendar.getInstance().getTime().toString() + " 访问过! " ); try { PrintWriter streamWriter = new PrintWriter(connection.getOutputStream()); BufferedReader streamReader = new BufferedReader( new InputStreamReader(connection.getInputStream())); System.out.println( " 111111111111111 " ); String read = streamReader.readLine(); // 如果客户端加入接收信息,就会停在这里不往下执行. System.out.println( " 222222222222222 " ); System.out.println(read); sun.misc.BASE64Decoder base64 = new sun.misc.BASE64Decoder(); read = new String(base64.decodeBuffer(read)); System.out.println( " client said: " + read); String msg = " login_ok " ; streamWriter.write(msg); streamWriter.flush(); streamWriter.close(); streamReader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

client:
C# code
        
        
public string sendLogin( string xml) { client = new TcpClient( " 127.0.0.1 " , 19999 ); client.ReceiveTimeout = 1000 ; client.SendTimeout = 2000 ; ns = client.GetStream(); byte [] b = System.Text.Encoding.UTF8.GetBytes(Base64.Base64Code(xml)); ns.Write(b, 0 , b.Length); ns.Flush(); b = new byte [ 256 ]; // ***********下行就是接收server返回信息,不加入的话server端就可以接收到这里发送的数据,加入的话server就一直处于等待读取client发送数据的状态,导致这里报错*************/ Int32 bytes = client.GetStream().Read(b, 0 , b.Length); // 就是这句话出错,错误信息是“无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。” string responseData = System.Text.Encoding.UTF8.GetString(b, 0 , bytes); ns.Close(); client.Close(); return responseData; }


如果client不加入接收信息的话server端是可以正常执行的:
*********************************************
++++++ 客户请求成功 ++++++
客户:/127.0.0.1在时间:Fri Jul 31 10:41:55 CST 2009访问过!
1111111111
2222222222
client said:jfdklsjfldksjfsdklfjdsfjdsklfjskfjdslfkjfkdjfl
*******************************

如果client加入接收信息的话server端就一直停在读取信息上:
*********************************************
++++++ 客户请求成功 ++++++
客户:/127.0.0.1在时间:Fri Jul 31 10:41:55 CST 2009访问过!
1111111111
*******************************
 
 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值