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 读取SD卡或者其他地方文件功能函数
  2. Android(安卓)- Android(安卓)Studio 的 Preview窗口
  3. android 之使用任意XML资源文件
  4. 解决Error inflating class android.support.v7.widget.Recycler
  5. Android利用Jpush实现异地登陆下线
  6. android开机动画
  7. Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem
  8. Android(安卓)cocos2d-x开发(二)之create-android-project.bat文件
  9. NPM 和webpack 的基础使用

随机推荐

  1. 读取XML文件时报“前言中不允许有内容”
  2. 教你如何正确使用XML
  3. 详解JSTL读取xml中文乱码解决的案例
  4. 详细介绍xml的语法的使用和学习
  5. 简单介绍OFBiz使用xml配置界面的想法
  6. xml的属性总结代码详情
  7. XML文件要有根标签(错误)的代码解决分享
  8. 详解xml文档正确格式的示例代码
  9. 具体介绍如何在IE中创建DOM并载入XML的详
  10. 详细介绍XML与浏览器