[英]Java TCP IP server client readline for TOF simulator
我嘗試編寫應用程序讀取並將數據發送到路透社TOF模擬器。
我發送一條消息給TOF服務器,文件分隔符(FS ASCII(28))就像這里一樣
package tr.com.calikbank.bnspr.treasury.reutersClient;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class Test {
/**
* @param args
*/
public static final String FS = Character.toString((char) 28);
public static final String US = Character.toString((char) 31);
public static final String GS = Character.toString((char) 29);
private static DataInputStream in;
private static Socket sock;
private static DataOutputStream out;
public static void main(String[] args) throws UnknownHostException,
IOException {
// TODO Auto-generated method stub
sock = new Socket("10.90.20.76", 5003);
sock.setKeepAlive(true);
in = new DataInputStream(sock.getInputStream());
out = new DataOutputStream(sock.getOutputStream());
String message = FS + "333" + US + "AE" + GS + "AAAA#1" + FS;
out.flush();
out.writeBytes(message);
out.flush();
// BufferedReader reader = new BufferedReader(new
// InputStreamReader(sock.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
// line = reader.readLine();
while ((line = in.readLine()) != null) {
sb.append(line).append("\n");
if (line.isEmpty())
break;
}
// line = in.readLine();
// sb.append(line).append("\n");
System.out.println("Message received from the server : "
+ sb.toString());
}
}
<>
但程序停留在while循環中,當我停止服務器然后返回整個字符串,但我需要得到沒有停止服務器。 有什么問題。
我的決定是readline有一個問題,參考sth 5530xD0xA
日Thnx
package tr.com.calikbank.bnspr.treasury.reutersClient;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class Test {
/**
* @param args
*/
public static final String FS = Character.toString((char) 28);
public static final String US = Character.toString((char) 31);
public static final String GS = Character.toString((char) 29);
public static final String RS = Character.toString((char) 30);
private static DataInputStream in;
private static Socket sock;
private static DataOutputStream out;
public static void main(String[] args) throws UnknownHostException,
IOException {
// TODO Auto-generated method stub
sock = new Socket("127.0.0.1", 5003);
sock.setKeepAlive(true);
in = new DataInputStream(sock.getInputStream());
out = new DataOutputStream(sock.getOutputStream());
String message = FS + "333" + US + "AE" + GS + "AAAA#1" + FS;
//String message=FS+"332"+US+"XX"+GS+"AAAA#INFO"+FS;
out.flush();
out.writeBytes(message);
out.flush();
// BufferedReader reader = new BufferedReader(new
// InputStreamReader(sock.getInputStream()));
StringBuilder sb = new StringBuilder();
int i=0;
// line = reader.readLine();
while (true)
{
byte[] inputData = new byte[5000];
in.read(inputData);
sb.append(new String(inputData));
i++;
if (i==3)
break;
}
// line = in.readLine();
// sb.append(line).append("\n");
System.out.println("Message received from the server : "
+ sb.toString());
String temps=new String(sb.toString());
String temps2=new String(sb.toString());
String[] partsUS = temps.split(US);
for (int j=0;i<partsUS.length;i++)
System.out.println(partsUS[i]); // 340
String[] partsRS = temps2.split(RS);
System.out.println("-----------");
for (int j=0;j<partsRS.length;j++)
System.out.println(partsRS[j]); // 340
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.