zoukankan      html  css  js  c++  java
  • 宋体客户端客户端通过tcp和服务端进行交互

    文章结束给大家来个程序员笑话:[M]

        

        TCPTransmission Control Protocol 传输控制议协TCP是一种面向连接(连接导向)的、牢靠的、基于字节流的运输层(Transport layer)信通议协,由IETFRFC 793明说(specified)。在简化的计算机网络OSI型模中,它成完第四层传输层所指定的功能,UDP是一同层内另一个主要的传输议协。

        本文模拟客户端通过TCP向服务端发起登录请求来实现这一功能。

        一、服务端

        package com.figo.helloworld.action;

         

        import java.io.BufferedReader;

        import java.io.BufferedWriter;

        import java.io.InputStreamReader;

        import java.io.OutputStreamWriter;

        import java.io.PrintWriter;

        import java.net.ServerSocket;

        import java.net.Socket;

         

        /**

         * 服务端Tcp登录接口,收接客户端登录请求

         *

         * @author zhuzhifei 版权所有

         *

         */

        public class TcpAction implements Runnable {

         

            /**

             * @param args

             */

            public static void main(String[] args) {

               // TODO Auto-generated method stub

               System.out.println("start");

               Thread desktopServerThread = new Thread(new TcpAction());

               desktopServerThread.start();

            }

         

            public void run() {

               try {

                   // 创立ServerSocket

                   ServerSocket serverSocket = new ServerSocket(8088);// 设置8088端口

                   while (true) {

                      // 接受客户端请求

                      Socket client = serverSocket.accept();

                      System.out.println("accept");

                      try {

                          // 收接客户端息消

                          BufferedReader in = new BufferedReader(

                                 new InputStreamReader(client.getInputStream()));

                          String str = in.readLine();

                          System.out.println("read:" + str);

                          // 向服务器发送息消

                          PrintWriter out = new PrintWriter(new BufferedWriter(

                                 new OutputStreamWriter(client.getOutputStream())),

                                 true);

        每日一道理
    坚持的昨天叫立足,坚持的今天叫进取,坚持的明天叫成功。

                          if ("123|abc".equals(str)) {

                             out.println("server message:" + "login success");

                          } else {

                             out.println("server message:"

                                    + "userName or password is error");

                          }

                          // 关闭流

                          out.close();

                          in.close();

                      } catch (Exception e) {

                          System.out.println(e.getMessage());

                          e.printStackTrace();

                      } finally {

                          // 关闭

                          client.close();

                          System.out.println("close");

                      }

                   }

               }

         

               catch (Exception e) {

                   System.out.println(e.getMessage());

               }

            }

        }

        二、客户端

         

        package com.figo.helloworld;

         

        import java.io.BufferedReader;

        import java.io.BufferedWriter;

        import java.io.InputStreamReader;

        import java.io.OutputStreamWriter;

        import java.io.PrintWriter;

        import java.net.InetSocketAddress;

        import java.net.Socket;

        import java.net.SocketTimeoutException;

         

        import org.apache.http.conn.ConnectTimeoutException;

         

        import android.app.Activity;

        import android.os.Bundle;

        import android.util.Log;

        import android.view.View;

        import android.view.View.OnClickListener;

        import android.widget.Button;

        import android.widget.EditText;

        import android.widget.TextView;

         

        /**

         * 这个Activity模拟用使Socket信通来调用服务端的登录接口

         *

         * @author zhuzhifei 版权所有

         *

         */

        public class TcpActivity extends Activity {

         

                 Button buttonLogin;

                 EditText etUserName;

                 EditText etPwd;

                 TextView tvResult;

         

                 @Override

                 protected void onCreate(Bundle savedInstanceState) {

                           super.onCreate(savedInstanceState);

                           setContentView(R.layout.tcptest);

                           buttonLogin = (Button) findViewById(R.id.buttonLogin);

                           etUserName = (EditText) findViewById(R.id.etUserName);

                           etPwd = (EditText) findViewById(R.id.etPwd);

                           tvResult = (TextView) findViewById(R.id.tvResult);

                           buttonLogin.setOnClickListener(new OnClickListener() {

         

                                    @Override

                                    public void onClick(View v) {

                                             Socket socket = null;

                                             String message = etUserName.getText().toString() + "|"

                                                                + etPwd.getText().toString();

                                             try {

                                                       // 创立Socket

                                                       socket = new Socket();

                                                       socket.connect(new InetSocketAddress("10.241.72.35", 8088),

                                                                         30000);// 30秒钟连接时超

                                                       socket.setSoTimeout(30000);// 30秒钟信通时超

                                                       socket.setTcpNoDelay(true);

                                                       // 向服务器发送息消

                                                       PrintWriter out = new PrintWriter(new BufferedWriter(

                                                                         new OutputStreamWriter(socket.getOutputStream())),

                                                                         true);

                                                       out.println(message);

                                                       // 收接来自服务器的息消

                                                       BufferedReader br = new BufferedReader(

                                                                         new InputStreamReader(socket.getInputStream()));

                                                       String msg = br.readLine();

                                                       if (msg != null) {

                                                                tvResult.setText(msg);

                                                       } else {

                                                                tvResult.setText("据数错误!");

                                                       }

                                                       // 关闭流

                                                       out.close();

                                                       br.close();

                                                       // 关闭Socket

                                                       socket.close();

                                             } catch (ConnectTimeoutException e) {

                                                       Log.e("tcp", e.toString());

                                             } catch (SocketTimeoutException e) {

                                                       Log.e("tcp", e.toString());

                                             } catch (Exception e) {

                                                       Log.e("tcp", e.toString());

                                             }

                                    }

                           });

                 }

        }

    文章结束给大家分享下程序员的一些笑话语录: 看到有人回帖“不顶不是中国人”,他的本意是想让帖子沉了。

  • 相关阅读:
    项目
    关于我
    【转载】罗胖精选|什么样的自控方法才有效?
    知识管理——得到CEO脱不花女士的一次分享
    注意由双大括号匿名类引起的serialVersionUID编译告警
    持续集成、持续交付和持续部署
    Google Cayley图数据库使用方法
    任务的属性
    团队博客地址
    个人总结
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3050728.html
Copyright © 2011-2022 走看看