JAVA 基础 网络编程

  • 1UDP完成数据的发送与接收
        DatagramSocket类 与 DatagramPacket类

        1)发送端

package demo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UDPSender {

	public static void main(String[] args) throws IOException {
		/*
		* 发送端
		 * 1,创建DatagramSocket对象
		 * 2,创建DatagramPacket对象,并封装数据
		 * 3,发送数据
		 * 4,释放流资源
		 */
		//创建datagramsocket对象
		DatagramSocket ds = new DatagramSocket();
		//2,创建DatagramPacket对象,并封装数据
		byte[] buf = "test msg!".getBytes();
		DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 9999);
		//发送数据
		ds.send(dp);
		//释放流资源
		ds.close();
		
	}

}

        2)接收端

package demo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDPReciver {
	
	public static void main(String[] args) throws IOException {
		/*
		 * UDP接收端
		 * 
		 * 1,创建DatagramSocket对象
		 * 2,创建DatagramPacket对象
		 * 3,接收数据存储到DatagramPacket对象中
		 * 4,获取DatagramPacket对象的内容
		 * 5,释放流资源
		 */
		//1,创建DatagramSocket对象,指定端口号
		DatagramSocket receivedSocket = new DatagramSocket(9999);
		//2,创建空DatagramPacket对象
		byte[] buf = new byte[1024];
		DatagramPacket pd = new DatagramPacket(buf, 1024);
		//3,接收数据存储到DatagramPacket对象中
		receivedSocket.receive(pd);
		//4,获取DatagramPacket对象的内容
		System.out.println("length:"+pd.getLength());
		System.out.println("port:"+pd.getPort());
		System.out.println("data"+new String(pd.getData()));
		System.out.println("IP"+pd.getAddress());
		
		//5,释放流资源
		receivedSocket.close();
		
	}
	
}
  • 2 TCP简单实现客户端与服务器

        ServerSocket类 与 Socket类

        1)服务器端

package demo1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
	/*
	 * TCP 服务器端
	 * 
	 * 1,创建服务器ServerSocket对象(指定服务器端口号)
	 * 2,开启服务器了,等待客户端的连接,当客户端连接后,可以获取到连接服务器的客户端Socket对象
	 * 3,给客户端反馈信息
	 * 4,获得客户端发的数据
	 * 5,关闭流对象
	 */
	
	public static void main(String[] args) throws IOException {
		//1,创建服务器ServerSocket对象(指定服务器端口号)
		ServerSocket serverSocket = new ServerSocket(9999);
		//2,开启服务器了,等待客户端的连接,当客户端连接后,可以获取到连接服务器的客户端Socket对象
		Socket s = serverSocket.accept();
		//3,给客户端反馈信息
		OutputStream out = s.getOutputStream();
		out.write("已经链接到服务器.".getBytes());
		//4,获得客户端发的数据
		InputStream in = s.getInputStream();
		byte[] buf = new byte[1024];
		int length = in.read(buf);
		System.out.println(s.getInetAddress().getHostAddress()+":"+new String(buf, 0, length));
		//5,关闭流对象
		out.close();
		s.close();
		//服务器流对象serverSocket一般不用关闭。
		
		
		
		
		
	}
	
	
}

       

        2)客户端

package demo1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {


	/*
	 * TCP 客户端
	 * 
	 * 1,创建客户端Socket对象,(指定要连接的服务器地址与端口号)
	 * 2,获取服务器端的反馈回来的信息
	 * 3,向服务器发送消息
	 * 4,关闭流资源
	 */
	public static void main(String[] args) throws IOException{
		//1,创建客户端Socket对象,(指定要连接的服务器地址与端口号)
		String host = "127.0.0.1";
		int port = 9999;
		Socket socket = new Socket(host, port);
		//2,获取服务器端的反馈回来的信息
		InputStream in = socket.getInputStream();
		byte[] buf = new byte[1024];
		int length = in.read(buf);
		System.out.println(new String(buf, 0, length));
		//3,向服务器发送消息
		OutputStream out = socket.getOutputStream();
		out.write("hello Server!".getBytes());
		//4,关闭流资源
		socket.close();
		
	}


}


猜你喜欢

转载自blog.csdn.net/alexzt/article/details/80414830