当前位置 主页 > 服务器问题 > Linux/apache问题 > 最大化 缩小

    Java实现TCP/IP协议的收发数据(服务端)代码实例

    栏目:Linux/apache问题 时间:2019-12-02 15:54

    这篇文章主要介绍了Java实现TCP/IP协议的收发数据(服务端)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    功能如下:

    注:

    只有服务端,没有客户端,测试时采用第三方软件作为客户端的。

    收发数据目前能正常收发数据,只是中文的会变成乱码显示。

    采用Thread类实现一个收发数据的线程。

    服务端代码:

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
      //监听端口
      private static final int PORT = 60020;
    
      public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = null;
        Socket socket = null;
        try {
          //建立服务器的Socket,并设定一个监听的端口PORT
          serverSocket = new ServerSocket(PORT);
          //由于需要进行循环监听,因此获取消息的操作应放在一个while大循环中
          while(true){
             try {
              //建立跟客户端的连接
              socket = serverSocket.accept();
             } catch (Exception e) {
               System.out.println("建立与客户端的连接出现异常");
               e.printStackTrace();
             }
             ServerThread thread = new ServerThread(socket);
             thread.start();
          }
        } catch (Exception e) {
          System.out.println("端口被占用");
          e.printStackTrace();
        }    
        finally {
          serverSocket.close();
        }
      }
    }
    
    //服务端线程类
    //继承Thread类的话,必须重写run方法,在run方法中定义需要执行的任务。
    class ServerThread extends Thread {
      private Socket socket ;
      InputStream inputStream;
      OutputStream outputStream;
      
      public ServerThread(Socket socket){
        this.socket=socket;
      }
      public void run(){
        try {
          while (true){
            //接收客户端的消息并打印
            System.out.println(socket);
            inputStream=socket.getInputStream();
            byte[] bytes = new byte[1024];
            inputStream.read(bytes);
            String string = new String(bytes);
            System.out.println(string);  
            
            //向客户端发送消息
            outputStream = socket.getOutputStream();
            outputStream.write("OK".getBytes());
            System.out.println("OK");
            
          }
        } catch (Exception e) {
          System.out.println("客户端主动断开连接了");
          //e.printStackTrace();
        }
        //操作结束,关闭socket
        try{
          socket.close(); 
        }catch(IOException e){
          System.out.println("关闭连接出现异常");  
          e.printStackTrace();
        }
      }
    }

    先开启服务端,再开启客户端,进行操作。

    客户端:

    (端口号选择“TCPClient”,远程填写IP地址和程序里设定好的端口“60020”,本地选择自己电脑的IP地址)

    服务端:

    注:

    串口调试工具下载地址

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。

    下一篇:没有了