步骤来完成:通讯通过套接字连接:
我的服务器上运行寻找连接套接字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