java實現 TCP通信


//服務端
import
com.hl.bluetooth.util.CRC16; import com.hl.bluetooth.util.FrameCheckFailedException; import com.hl.bluetooth.util.stream.StreamUtils; import com.hl.bluetooth.util.util; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.nio.ByteBuffer; import java.util.Arrays; /** * @author hwx * @date 2021/11/4 */ public class TcpServer extends ServerSocket { private static final Logger logger = LoggerFactory.getLogger(TcpServer.class); public TcpServer(int serverPort) throws IOException { super(serverPort); try { while (true) { Socket socket = accept(); new ServerThread(socket); } } catch (Exception e) { logger.error("tcp服務器已停止監聽"); } finally { close(); } } class ServerThread extends Thread /*建立服務端線程*/ { private Socket socket; private DataInputStream inputStream; private InputStream in; private InputStream i; private byte[] bytes; private DataOutputStream out; public ServerThread(Socket s) throws Exception { logger.info("tcp服務器開始監聽......"); this.socket = s; in = socket.getInputStream(); inputStream = new DataInputStream(in); /* in = new BufferedReader(new InputStreamReader( socket.getInputStream(), "GB2312")); *//*國標碼*/ out = new DataOutputStream(socket.getOutputStream()); String str = s.getInetAddress().getHostAddress(); StreamUtils.setOutputStream(s.getInetAddress().getHostAddress(), new DataOutputStream(socket.getOutputStream())); StreamUtils.setInputStream(s.getInetAddress().getHostAddress(), new DataInputStream(socket.getInputStream())); // 開始線程 start(); } @SneakyThrows @Override public void run() { try {
          Scanner scanner = new Scanner(System.in);// 裝飾標准輸入流,用於從控制台輸入
while (true) {

              String send = scanner.nextLine();//讀取控制台輸入的內容
              System.out.println("客戶端:" + send);//輸出鍵盤輸出內容提示 ,也就是客戶端向服務器端發送的消息
              // 把從控制台得到的信息傳送給服務器
              out.writeUTF("客戶端:" + send);//將客戶端的信息傳遞給服務器
              String accpet = in.readUTF();// 讀取來自服務器的信息
              System.out.println(accpet);//輸出來自服務器的信息

                }
            } catch (Exception e) {
                logger.error(socket.getInetAddress().getHostAddress() + "連接斷開-----" + e.getMessage(), e);
            } finally {
                DataOutputStream outputStream = StreamUtils.getOutputStream(socket.getInetAddress().getHostAddress());
                outputStream.close();
                inputStream.close();
                socket.close();
            }


        }
//客戶端
import
java.io.*; import java.net.Socket; import java.net.UnknownHostException; /** * @author hwx * @date 2021/11/4 */ public class TcpClient { /** * 定義socket連接 */ private Socket socket; private DataInputStream inputStream; /** * 打印到文本輸出流 */ private PrintWriter writer; private OutputStream outputStream; public TcpClient(int serverPort) { /*定義客戶端端口號*/ try { /*拋異常*/ socket = new Socket("192.168.153.202", serverPort); inputStream = new DataInputStream( /*標准輸入輸出流*/ socket.getInputStream()); writer = new PrintWriter(socket.getOutputStream()); outputStream = socket.getOutputStream(); while (true) { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String message = in.readLine();if ("finish".equals(message)) { System.out.println("服務器已停止監聽"); break; } } outputStream.close(); writer.close(); inputStream.close(); /*關閉流*/ socket.close(); } catch (UnknownHostException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); /*在命令行打印異常信息在程序中出錯的位置及原因*/ } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM