Socket通信简单实现客户端-服务器消息发送

3/8/2017来源:ASP.NET技巧人气:3849

在这里我主要涉及到的是TCP通信,TCP是面向连接的可靠的传输协议。数据传输的单位是报文段。 用户数据报协议(UDP协议)提供无连接的尽最大努力的不可靠的数据传输服务。他们主要属于运 用层协议如FTP、SMTP等)-运输层(TCP或UDP)-网络层-数据链路层-物理层。 在TCP协议中,每一条TCP连接只能有两个端点,全双工通信并且是面向字节流的。 简单的java实现代码如下: 服务端: 1.在服务端建立ServerSocket并绑定相应的和端口 2.使用accept()方法等待连接 3.利用输入流获取输入的内容 4.关闭连接 package ServerSocket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; /* * 当一台计算机需要与另一台计算机通信时,需要知道另一台计算机的地址,那就是ip,或者说是域名 * 一旦建立连接,客户端和服务器就可以通过套接字进行通信 */ public class Server { public static void main(String[] args) { ServerSocket serverSocket; Socket socket=null; try { serverSocket = new ServerSocket(8000); System.out.PRintln("服务器已经启动!"); socket = serverSocket.accept();//等待客户端连接 System.out.println("创建客户连接..."); InputStream input = socket.getInputStream();//获取输入流 InputStreamReader isr = new InputStreamReader(input);//字节流和字符流通信的桥梁,相当于将字节流转化为字符流 BufferedReader reader = new BufferedReader(isr); while(true){ String str = reader.readLine();//整行读取内容 if(str.equals("exit")){ break;//退出 } System.out.println("接收内容:"+str); } System.out.println("连接断开"); reader.close(); isr.close(); input.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }

客户端: 1.使用套接字连接,当客户端创建连接Socket并且向服务端发送请求。 2.连接成功后发送输入内容

package ServerSocket; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; //实现客户端代码 public class Client { @SuppressWarnings("resource") public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 8000); OutputStream os = socket.getOutputStream(); Scanner input = new Scanner(System.in); while (true) { System.out.print("请输入内容:"); String str = input.nextLine(); os.write((str+"\n").getBytes());//通过转 os.flush(); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }