我在寫這個微小的實用程序方法來測試將原始數據包發送到特定的消息傳遞網絡(計劃開發客戶端以連接到它)。通過TCP套接字發送數據包
該網絡是Deviantart消息網絡(chat.deviantart.com:3900; TCP)。
我的類:
protected void connect() throws IOException{
Socket dAmn = null;
//BufferedWriter out = null;
PrintWriter out = null;
BufferedReader in = null;
/*
* Create Socket Connection
*/
try{
dAmn =
new Socket("chat.deviantart.com", 3900);
/*out =
new BufferedWriter(new OutputStreamWriter(dAmn.getOutputStream()));*/
out =
new PrintWriter(dAmn.getOutputStream(), true);
in =
new BufferedReader(new InputStreamReader(dAmn.getInputStream()));
}
catch(SocketException e){
System.err.println("No host or port for given connection");
//handle
}
catch(IOException e){
System.err.println("I/O Error on host");
//handle
}
String userInput;
BufferedReader userIn =
new BufferedReader(new InputStreamReader(System.in));
/*
* dAmn communication
*/
while((userInput = userIn.readLine()) != null){
out.write(userInput);
System.out.println(in.readLine());
}
if(in!=null)
in.close();
if(out!=null)
out.close();
if(dAmn!=null)
dAmn.close();
}
服務器需要一個握手之前登錄可以繼續發送。一個典型的登錄數據包看起來像這樣:
dAmnclient damnClient(目前0.3) 劑= 劑
每個分組必須使用換行和空結束。
我握手包看起來是這樣的:
dAmnClient 0.3 \ nagent = SomeAgent \ n \ 0
然而,服務器只需用斷開回復
我認爲某件事情是錯誤的被解析,有什麼建議?另外,如果你在幫我出超級位數的:這裏的客戶端上的一些簡單的文檔 - >服務器該死的協議: http://botdom.com/wiki/DAmn#dAmnClient_.28handshake.29
簡化版,.WRITE()自動刷新? – Francis 2011-03-12 23:39:10