[关闭]
@liruiyi962464 2017-03-08T08:23:20.000000Z 字数 2867 阅读 450

网络编程

java

TCP

客户端Client

  1. public class Test1_Client {// 客户顿
  2. public static void main(String[] args) throws Exception {
  3. // 1.创建一个Socket对象
  4. Socket socket = new Socket("127.0.0.1", 12345);
  5. // 2.从Socket获得IO流
  6. InputStream is = socket.getInputStream();
  7. OutputStream os = socket.getOutputStream();
  8. byte[] buf = new byte[1024 * 200];
  9. // 接收服务器的数据
  10. // is是耳朵
  11. int len = is.read(buf);
  12. // socket.getInetAddress()客户端地址
  13. // socket.getPort()端口号
  14. System.out.println(new String(buf, 0, len) + socket.getInetAddress() + ":" + socket.getPort());
  15. String str = "你好我是客户端,再见";
  16. // 向服务器发送数据
  17. // os是嘴
  18. while (len != 0) {
  19. os.write(len);
  20. is.read();
  21. }
  22. os.write(str.getBytes());
  23. }
  24. }

服务器端

  1. public class Test1_Server {// 服务器端
  2. public static void main(String[] args) throws Exception {
  3. // 1.创建一个ServerSocket对象
  4. ServerSocket server = new ServerSocket(12345);
  5. // 2.调用accept()方法接收客户端的请求,就是接受客户端的Socket
  6. Socket socket = server.accept();
  7. // 3.从Socket中获得IO流
  8. InputStream is = socket.getInputStream();
  9. OutputStream os = socket.getOutputStream();
  10. // 向客户端发送数据
  11. // os是嘴
  12. os.write("欢迎你来访问我,我是Server端".getBytes());
  13. byte[] buf = new byte[1024 * 200];
  14. // 接收客户端发来的数据
  15. // is是耳朵
  16. int len = is.read(buf);
  17. // socket.getInetAddress()客户端地址 socket.getPort()端口号\
  18. System.out.println(new String(buf, 0, len) + ":" + socket.getInetAddress() + ":" + socket.getPort());
  19. while (len != 0) {
  20. is.read();
  21. os.write(len);
  22. }
  23. socket.close();
  24. }
  25. }

UDP

客户端Receive

  1. public class Test1_Receive {// 客户端
  2. public static void main(String[] args) throws Exception {
  3. // 1.创建DatagramSocket对象
  4. DatagramSocket socket = new DatagramSocket(666);
  5. // 2.通过receive()方法获得packet
  6. byte[] buf = new byte[1024 * 200];
  7. DatagramPacket packet = new DatagramPacket(buf, buf.length);
  8. socket.receive(packet);
  9. // 3.获得数据
  10. byte[] data = packet.getData();
  11. System.out.println(new String(data, 0, data.length));
  12. socket.close();
  13. }
  14. }

服务器端Send

  1. public class Test1_Send {// 服务器端
  2. public static void main(String[] args) throws Exception {
  3. // 1.建立DatagramSocket对象,分配一个端口号
  4. DatagramSocket socket = new DatagramSocket();
  5. // 2.将数据进行packet包的封装
  6. byte[] buf = "天天开心".getBytes();
  7. DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 666);
  8. socket.send(packet);
  9. socket.close();
  10. }
  11. }

TCP实现交流

客户端

  1. public static void main(String[] args) throws Exception {
  2. Scanner sc = new Scanner(System.in);
  3. Socket socket = new Socket("127.0.0.1", 12345);
  4. InputStream is = socket.getInputStream();
  5. OutputStream os = socket.getOutputStream();
  6. while (true) {
  7. byte[] buf1 = new byte[1024 * 2];
  8. int len1 = is.read(buf1);
  9. System.out.println(new String(buf1, 0, len1));
  10. System.out.println("客户端输入:");
  11. String str = sc.next();
  12. os.write(str.getBytes());
  13. if (str.equals("n")) {
  14. break;
  15. }
  16. }
  17. is.close();
  18. os.close();
  19. socket.close();
  20. }

服务器端

  1. public static void main(String[] args) throws Exception {
  2. Scanner sc = new Scanner(System.in);
  3. ServerSocket server = new ServerSocket(12345);
  4. Socket socket = server.accept();
  5. InputStream is = socket.getInputStream();
  6. OutputStream os = socket.getOutputStream();
  7. os.write("欢迎访问服务器".getBytes());
  8. while (true) {
  9. byte[] buf1 = new byte[1024 * 2];
  10. int len1 = is.read(buf1);// is耳朵
  11. System.out.println(new String(buf1, 0, len1));
  12. System.out.println("服务器输入:");
  13. String str = sc.next();
  14. os.write(str.getBytes());
  15. if (str.equals("n")) {
  16. break;
  17. }
  18. }
  19. socket.close();
  20. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注