步驟來完成:通訊通過套接字連接:
我的服務器上運行尋找連接套接字4444
我有android的應用程序連接到插座。
我有android應用程序跨套接字連接發送兩個參數。
我有服務器消化兩個單獨的參數並相應地處理它們。
當我嘗試發回消息時,我的問題就開始了。
請大家幫助我一個客戶端類和服務器類的例子,使用BufferedReader
和PrintWriter
將數據從客戶端發送到服務器,接受服務器端的數據並返回數據以供客戶端接收?
感謝您的幫助。
步驟來完成:通訊通過套接字連接:
我的服務器上運行尋找連接套接字4444
我有android的應用程序連接到插座。
我有android應用程序跨套接字連接發送兩個參數。
我有服務器消化兩個單獨的參數並相應地處理它們。
當我嘗試發回消息時,我的問題就開始了。
請大家幫助我一個客戶端類和服務器類的例子,使用BufferedReader
和PrintWriter
將數據從客戶端發送到服務器,接受服務器端的數據並返回數據以供客戶端接收?
感謝您的幫助。
創建從插座輸出流的新PrintWriter
PrintWriter writer = new PrintWriter(new BufferedOutputStream(socket.getOutputStream()));
writer.write("blather");
writer.flush();
嗨橋,我已經這樣做了。但出於某種原因,或者我沒有正確讀取客戶端返回的消息,或者我沒有正確發送它。 我將清理我的代碼並在幾分鐘內將它發佈到這裏。 – 2011-04-16 20:22:10
你沖洗()? – sbridges 2011-04-17 02:00:06
是的,我感謝;)我只是忽略關閉在客戶端的套接字。非常愚蠢!謝謝! – 2011-04-17 02:43:26
不使用讀/寫器有時我造成的問題,比如我們無法預測字符串的結尾,etc.So請寫或只讀字節或字節數組。這是更好的方法。
以下是樣本編碼代碼片段
socket=new Socket(this.ipAddress,this.port_number);
//socket.setSocketImplFactory(fac)
Log.i(tagName, "after creating sokcet");
os=socket.getOutputStream();
is=socket.getInputStream();
dos=new DataOutputStream(os);
Log.i(tagName, "after creating ouput streams");
dis=new DataInputStream(is);
Log.i(tagName, "after creating input streams");
//dos.writeUTF(msg[i].trim());
//dos.write(msg[i].trim().getBytes());
//dos.writeUTF(msg[i].trim());
dos.write(msg[i].trim().getBytes());
//dos.writeUTF(str)
dos.flush();
Log.i(tagName, "after writing data to os");
StringBuilder sbuilder=new StringBuilder();
///*
int ch;
byte bt=1;
while((bt=(byte) dis.read())!=-1)
{
Log.i(tagName, "ch="+bt);
byte temp[]=new byte[1];
//temp[0]=(byte)ch;
temp[0]=(byte)bt;
String tempStr1=new String(temp);
Log.i(tagName, "tempstr:"+tempStr1);
sbuilder.append(tempStr1);
Log.i(tagName, "Data fro server : "+sbuilder.toString());
tempStr1=null;
}
//*/
//byte tt[]=new byte[dis.readLine()]
//resultStr=dis.readLine();resultStr=resultStr.trim();
resultStr=sbuilder.toString();
Log.i(tagName, "server res :"+resultStr);
(Toast.makeText(this.actitivity,"Result : "+resultStr,Toast.LENGTH_SHORT)).show();
if(dos!=null)
{
try
{
dos.close();
}
catch(Exception ex)
{
}
}
if(dis!=null)
{
try
{
dis.close();
}
catch(Exception ex){}
}
if(socket!=null)
{
try
{
socket.close();
}
catch(Exception ex)
{
}
}
其BufferedReader,謝謝。 – 2011-04-16 17:47:51