socket客户端与服务端代码(解决16进制输入流转换字符串操作)
2016-09-22 12:16
489 查看
MainActivity.java
客户端代码 SocketClient.java
有多种转换方法
服务端代码 SocketSever.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 (); } }
相关文章推荐
- Android socket 客户端 C++服务端, 延时严重解决,贴点粘包代码
- Socket编程服务端和客户端代码
- Linux 下socket编程客户端与服务端代码
- android 建立Socket长链接 服务端 - 客户端代码(+1)
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
- android客户端和java服务端之间用socket来传输图片(示例代码)
- c#实现16进制和字符串之间转换的代码
- 编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]
- java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码
- Linux 下socket编程客户端与服务端代码
- c#实现16进制和字符串之间转换的代码
- 多线程多端口Socket服务端客户端代码 java
- JS操作字符串转换为数值并取整的代码
- C# socket 服务端与客户端通信演示代码
- c#实现16进制和字符串之间转换的代码
- soket多线程操作服务端及客户端代码
- C# 实现16进制和字符串之间转换的代码[转]
- 〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理
- JS操作字符串转换为数值并取整的代码
- 没有任何关闭socket的日志,客户端和服务端进程都在, 网络连接完好, 为什么进行某操作后好好的tcp连接莫名其妙地断了呢?