Java-网络编程-TCP
1、client端
package cn.bruce.TCP; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; /*实现TCP客户端,连接到服务器,实现数据交换 * 实现客户端程序的类:java.net.Socket * 构造方法:Socket(String host,int port)传递IP和端口 * OutputStream getOutputStream()返回套接字的输出流-将数据输出,输出到服务器 * InputStream getInputStream()返回套接字的输入流-从服务器端读取数据 * */ public class TCPCLIENT { public static void main(String[] args) throws IOException, IOException { // 创建socket,连接服务器 Socket s = new Socket("127.0.0.1", 8888); // 通过客户端的套接字对象Socket方法,获取字节输出流,将数据写向服务器 OutputStream out = s.getOutputStream(); // 服务服务器发回的数据 InputStream in = s.getInputStream(); Scanner scanner = new Scanner(System.in); byte[] data = new byte[1024]; while (true) { out.write(scanner.nextLine().getBytes());//发送给服务器的数据 System.out.println(new String(data, 0, in.read(data)));//打印接受服务器的数据 } // s.close(); } }
2、severs端
package cn.bruce.TCP; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /*实现TCP服务器,实现数据交换 * 实现客户端程序的类:java.net.SeversSocket * 构造方法:Socket(int port)接收端口 * 很重要的事情:必须获得客户端的套接字对象Socket accept() * * */ public class TCPSevers { public static void main(String[] args) throws IOException { // 创建服务器对象 ServerSocket ss = new ServerSocket(8888); // 调用accept()方法,获取客户端套接字对象 Socket s = ss.accept(); // 通过套接字对象,socket获取字节 InputStream in = s.getInputStream(); // 服务器向客户端回数据,字节输出流,通过客户端套接字对象获取字节输出流 OutputStream out = s.getOutputStream(); byte[] data = new byte[1024]; Scanner scanner = new Scanner(System.in); while (true) { int len = in.read(data);// 取得数据长度 System.out.println(new String(data, 0, len));//打印来自客户端的信息 out.write(scanner.nextLine().getBytes());//发送数据给客户端 } } //s.close();关闭后面可以用try改进 }