介绍
小编给大家分享一下Java如何实现TCP/IP协议的收发数据服务端,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
功能如下:
注:
只有服务端,没有客户端,测试时采用第三方软件作为客户端的。
收发数据目前能正常收发数据,只是中文的会变成乱码显示。
采用线程类实现一个收发数据的线程。
服务端代码:
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 =,空; ,,,Socket Socket =,空; ,,,try { ,,,,,//建立服务器的插座,并设定一个监听的端口港 ,,,,,serverSocket =, new ServerSocket(港口); ,,,,,//由于需要进行循环监听,因此获取消息的操作应放在一个虽然大循环中 ,,,,,,(真正的){ ,,,,,,,,try { ,,,,,,,,,//建立跟客户端的连接 ,,,,,,,,,socket =, serverSocket.accept (); ,,,,,,,,},catch (Exception e), { ,,,,,,,,,,System.out.println(“建立与客户端的连接出现异常“); ,,,,,,,,,,e.printStackTrace (); ,,,,,,,,} ,,,,,,,,ServerThread thread =, new ServerThread(插座); ,,,,,,,,thread.start (); ,,,,,} ,,,},catch (Exception e), { ,,,,,System.out.println(“端口被占用“); ,,,,,e.printStackTrace (); ,,,},,,, ,,,finally { ,,,,,serverSocket.close (); ,,,} ,,} }//服务端线程类//继承线程类的话,必须重写运行方法,在运行方法中定义需要执行的任务。 class ServerThread  extends Thread  { private 才能;Socket  Socket ; InputStream 才能inputStream; OutputStream 才能;outputStream; ,, public 才能;ServerThread (Socket 插座){ ,,,this.socket=套接字; ,,} public 才能;void 运行(){ ,,,try { ,,,,,while (真正的){ ,,,,,,,//接收客户端的消息并打印 ,,,,,,,System.out.println(插座); ,,,,,,,inputStream=socket.getInputStream (); ,,,,,,,byte [], bytes =, new 字节[1024]; ,,,,,,,read(字节); ,,,,,,,String String =, new 字符串(字节); ,,,,,,,System.out.println(字符串),,, ,,,,,,, ,,,,,,,//向客户端发送消息 ,,,,,,,outputStream =, socket.getOutputStream (); ,,,,,,,outputStream.write (“OK" .getBytes ()); ,,,,,,,System.out.println (“OK"); ,,,,,,, ,,,,,} ,,,},catch (Exception e), { ,,,,,System.out.println(“客户端主动断开连接了“); ,,,,,//e.printStackTrace (); ,,,} ,,,//操作结束,关闭插座 ,,,试着{ ,,,,,socket.close (),, ,,,}捕捉(IOException e) { ,,,,,System.out.println(“关闭连接出现异常“),,, ,,,,,e.printStackTrace (); ,,,} ,,} nullJava如何实现TCP/IP协议的收发数据服务端