MainActivity.java
public class MainActivity extends AppCompatActivity { private SocketClient client; private SocketServer server=new SocketServer ( 6666 ); private String password; private TextView txt; private EditText edit; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_main ); txt=(TextView)findViewById ( R.id.textView ); edit=(EditText)findViewById ( R.id.edit ); btn=(Button)findViewById ( R.id.btn ); //服务端代码 btn.setOnClickListener ( new View.OnClickListener ( ) { @Override public void onClick(View v) { Log.i ( "hh","08"); server.beginListen (); Log.i ( "hh","09"); btn.setVisibility ( View.GONE ); } } ); //客户端代码 // server.beginListen (); // client=new SocketClient (); // client.clintValue ( MainActivity.this,"172.18.74.64" ,6668); // client.openClientThread (); // // btn.setOnClickListener ( new View.OnClickListener ( ) // { // @Override // public void onClick(View v) // { // password=edit.getText ().toString (); // client.sendMsg ( password ); // // } // } ); // SocketClient.mHandler=new Handler ( ){ // @Override // public void handleMessage(Message msg) // { // txt.setText ( msg.obj.toString ()); // Log.i ( "msg",msg.obj.toString ()); // } // }; } }客户端代码 SocketClient.java
有多种转换方法
public class SocketClient { private Socket client; private Context context; private int port; private String site; private Thread thread; public static Handler mHandler; private boolean isClient=false; private PrintWriter out; private InputStream in; private String str;; public void openClientThread(){ thread=new Thread ( new Runnable ( ) { @Override public void run() { try { client=new Socket ( site,port );//建立连接 // client.setSoTimeout ( 5000 );//设置超时时间 if (client!=null) { Log.i ( "socket","1" ); isClient=true; forOut(); Log.i ( "socket","2" ); forIn (); }else { isClient=false; Toast.makeText ( context,"网络连接失败",Toast.LENGTH_LONG ).show (); } Log.i ( "hahah","site="+site+" ,port="+port ); }catch (UnknownHostException e) { e.printStackTrace (); Log.i ( "socket","6" ); }catch (IOException e) { e.printStackTrace (); Log.i ( "socket","7" ); } } } ); thread.start (); } public void clintValue(Context context,String site,int port) { this.context=context; this.site=site; this.port=port; } public void forOut() { try { out=new PrintWriter ( client.getOutputStream () ); }catch (IOException e){ e.printStackTrace (); Log.i ( "socket","8" ); } } public void forIn(){ Log.i ( "hhhhh",isClient+"" ); while (isClient) { try { in=client.getInputStream (); Log.e ( "aaa",in.toString () ); byte[] bt = new byte[50]; str=new String ( bt,"GBK" ); in.read ( bt ); Log.d ( "soket1",str ); } catch (IOException e) { } if (str!=null) { Message msg = new Message ( ); msg.obj =str ; mHandler.sendMessage ( msg ); } } } public void sendMsg(final String str) { new Thread ( new Runnable ( ) { @Override public void run() { if (client!=null) { out.print ( str ); out.flush (); Log.i ( "outtt",out+"" ); }else { isClient=false; Toast.makeText ( context,"网络连接失败",Toast.LENGTH_LONG ).show (); } } } ).start (); } public String bytes2hex03(byte[] bytes) { final String HEX = "0123456789abcdef"; StringBuilder sb = new StringBuilder(bytes.length * 2); for (byte b : bytes) { sb.append(HEX.charAt((b >> 4) & 0x0f)); sb.append(HEX.charAt(b & 0x0f)); } return sb.toString(); } /** * @fuction 输入流转化为字符串 * @param tInputStream * @return String */ public static String getStreamString(InputStream tInputStream) { try { if (tInputStream.available()!=0) { Log.e ( "Socket2"," " ); try { BufferedReader tBufferedReader = new BufferedReader(new InputStreamReader (tInputStream)); StringBuffer tStringBuffer = new StringBuffer(); String sTempOneLine = new String(""); while ((sTempOneLine = tBufferedReader.readLine()) != null) { tStringBuffer.append(sTempOneLine); } Log.e ( "Socket3"," "+tStringBuffer.toString() ); return tStringBuffer.toString(); } catch (Exception ex) { ex.printStackTrace(); Log.e ( "Socket3"," "+ex.toString ( ) ); } } } catch (IOException e) { e.printStackTrace ( ); Log.e ( "Socket4"," "+e.toString ( ) ); } return null; } private static byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); } public void closeSocket() { try { client.close (); }catch (IOException e){ e.printStackTrace (); } } }服务端代码 SocketSever.java
public class SocketServer { private ServerSocket server; private Socket socket; private InputStream in; private String str=null; private boolean isClint=false; public SocketServer(int port){ try { server= new ServerSocket ( port ); isClint=true; }catch (IOException e){ e.printStackTrace (); } } public void beginListen() { new Thread ( new Runnable ( ) { @Override public void run() { while (true) { try { socket=server.accept (); try { in =socket.getInputStream(); PrintWriter out = new PrintWriter(socket.getOutputStream()); while (!socket.isClosed()) { byte[] bt=new byte[50]; in.read ( bt ); str=new String ( bt,"GBK" ); out.println("Hello!world!! " + str); out.flush (); if (str==null||str=="exit") break; System.out.println(str); } socket.isClosed (); } catch (IOException e) { e.printStackTrace ( ); } } catch (IOException e) { e.printStackTrace ( ); } } } } ).start (); } }