只求发送数据部分和数据接收部分 TCP连接不要 客户端和服务器响应次数也不要
只求发送数据部分和数据接收部分(java发送c#接收)
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
*******************************
http://www.cnblogs.com/kevinGao/archive/2011/12/19/2294466.html
如果不是非要用Socket这种解决方案,可以试下用WCF,几种通讯服务都可以应付这个场景。
注意处理一下编码问题就行了,JAVA默认好像是utf-8
就是基本socket啊