socket编程
服务器端:
EchoServer.java文件
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclass
EchoServerextendsThread{
privatestaticfinalintPORT=8888;
privateEchoServer(){}
/**
*@paramargs
*/

publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
EchoServerechoServer=newEchoServer();
if(echoServer!=null)
echoServer.start();
System.out.println("start");
}
finalstaticintsleepTime=5;
publicvoidrun()
{
try{
ServerSocketserver=newServerSocket(PORT,10);
while(true)
{
Socketclient=server.accept();
System.out.println("ClientConnected");
while(true)
{
BufferedReaderreader=newBufferedReader(
newInputStreamReader(client.getInputStream()));
System.out.println("readfromclient");
StringtextLine=reader.readLine()+"\n";
if(textLine.equalsIgnoreCase("EXIT\n"))
{
System.out.println("EXITinvoked,closingclient");
break;
}
BufferedWriterwriter=newBufferedWriter(
newOutputStreamWriter(client.getOutputStream()));
System.out.println("Echoinputtoclient"+textLine);
Stringtext="ECHOfromserver:"+textLine;
writer.write(text,0,text.length());
writer.flush();
}
client.close();
Thread.sleep(sleepTime);
}
}catch(IOExceptione)
{
e.printStackTrace();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
客服端:
Hello.java文件
packagecom.teleca.Socket;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.net.Socket;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassHelloextendsActivity{
TextViewtextConent;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Buttonbutton=(Button)findViewById(R.id.Button01);
OnClickListenerlistener=newOnClickListener(){
@Override
publicvoidonClick(Viewv){
mode=MODE_SOCKET;
doAction();
}
};
button.setOnClickListener(listener);
textConent=(TextView)findViewById(R.id.TextView01);
}
finalstaticintMODE_SOCKET=0;
intmode;
finalstaticStringtag="hubin";
finalstaticStringip="10.89.3.108";
finalstaticStringport="8888";
classConnectThreadimplementsRunnable{
publicvoidrun(){
Messagemessage=Message.obtain(handler);
Bundleb=newBundle();
if(mode==MODE_SOCKET)
{
Stringtext=callSocket(ip,port,"Hello,Timeis"+System.currentTimeMillis());
if(text==null)
{
message.what=FAIL;
b.putString("content","Erro");
}
else
{
message.what=SUCCESS;
b.putString("content",text);
}
}
message.setData(b);
message.sendToTarget();
}
}
privateStringcallSocket(Stringip,Stringport,StringsocketData)
{
Socketsocket=null;
BufferedWriterwriter=null;
//BufferedReaderreader=null;
InputStreamis;
Stringoutput="Hello";
try
{
socket=newSocket(ip,Integer.parseInt(port));
writer=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream()));

//reader=newBufferedReader(newInputStreamReader(socket.getInputStream()));
is=socket.getInputStream();
Stringinput=socketData;
writer.write(input+"\n",0,input.length()+1);
writer.flush();
Thread.sleep(100);
intsize=is.available();
bytebuffer[]=newbyte[size];
is.read(buffer);
//output=reader.readLine();
output=newString(buffer);
Log.i(tag,"getsuccess"+output);
writer.write("Exit\n",0,5);
writer.flush();
Log.i(tag,"sendsuccess");
}catch(IOExceptione)
{
Log.e(tag,"connecterro:",e);
}catch(InterruptedExceptione)
{
Log.e(tag,"Threaderro:",e);
}
returnoutput;
}
finalstaticintSUCCESS=0;
finalstaticintFAIL=1;
Handlerhandler=newHandler(){
publicvoidhandleMessage(Messagemessage){
Log.i(tag,"handle");
if(message==null)
return;
intwhat=message.what;
if(what==SUCCESS)
{
Stringtext=message.getData().getString("content");
textConent.setText(text);
textConent.invalidate();
}
}
};
voiddoAction(){
Threadt=newThread(newConnectThread());
t.start();
}
}
注意1:AndroidManifest.xml中要加入权限
<uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>
注意2:可用BufferedReader进行读

更多相关文章

  1. android通过servlet服务器保存文件到手机
  2. Android 文件选择器,单选,多选
  3. Android利用TTF文件设置字体
  4. android 保存bitmap到指定文件
  5. 向SD卡写文件
  6. android html 读写文件
  7. Android 播放MP4文件

随机推荐

  1. Day 35/100 React 组件通讯基本介绍
  2. 告别收费BI!如何自己动手做一个免费的可
  3. Laravel实现将数据库操作记入日志
  4. python 包之 httpx 请求操作教程
  5. 双色球选项卡实践
  6. python 包之 re 正则匹配教程
  7. 如何使用 Lightly 邀请朋友在线协作?
  8. 盒模型/媒体查询/em和rem的用法与区别
  9. 0317作业
  10. 0318作业