java-网络通信

1.TCP

服务端

package day26.net;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 服务端 socket
 * 		1.监听所有客户端连接
 * 		2.接收所有客户端发送来的数据
 * 		3.发送给客户端数据
 * */
public class ServerSocketDemo {

	public static void main(String[] args) throws IOException {
		// 1.创建一个ServerSock对象,并绑定本机的端口号
		ServerSocket server=new ServerSocket(9999);
		//2.阻塞监听客户端连接的对象  端点
		System.out.println("等待客户端连接。。。");
		Socket socket=server.accept();
		System.out.println("客户端连接");
		//3.接收客户端发送来的数据 读取数据
		FileInputStream in=(FileInputStream)socket.getInputStream();
		//创建一个缓冲数组
		byte[]buf=new byte[1024];
		int len=0;
		while ((len=in.read(buf))!=-1) {
			//处理数据
			String str=new String(buf,0,len);
			System.out.println("接收到的数据:"+str);
		}
		//4.关闭流
		in.close();
		//5.关闭socket
		socket.close();				
	}
}

客户端

package day26.net;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
/**
 * 客户端socket
 * 		1.连接服务器socket对象
 * 		2.发送数据给服务器
 * 		3.接收服务器返回的数据
 * */
public class ClientSocketDemo {

	public static void main(String[] args) throws UnknownHostException, IOException {
		// 1.创建客户端socket对象,指定要连接的服务器端口号和主机地址,自动连接服务器
		Socket client=new Socket("127.0.0.1", 9999);
		//2.给服务器发送数据 写操作,输出流
		FileOutputStream out=(FileOutputStream) client.getOutputStream();
		//发送数据
		out.write("Hello ServerSocket!".getBytes());
		//刷入
		out.flush();
		//关闭流
		out.close();
		//关闭socket
		client.close();
	}
}

2.UDP

package day28.udp;

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

/**
 * UDP是一个不可靠的连接协议
 * 数据发送都是以报文进行发送的
 * */
public class SendMsg {

	public static void main(String[] args) throws IOException {
		// 1.创建socket对象
		DatagramSocket socket=new DatagramSocket(9098);
		//2.创建要发送的报文,报文:地址和数据
		String msg="Hello Java!";
		//构建报文
		byte[]buf=msg.getBytes();
		DatagramPacket packet=new DatagramPacket(buf, buf.length,InetAddress.getByName("127.0.0.1"),9099);
		//3.发送报文
		socket.send(packet);
		//4.设置包的长度
		buf=new byte[1024];
		packet.setData(buf, 0, buf.length);
		//接收数据
		socket.receive(packet);
		//处理数据
		System.out.println("接收到的数据是:"+new String(packet.getData(),0,packet.getLength()));
		System.out.println("IP:"+packet.getAddress().getHostAddress()+"\tPort:"+packet.getPort());
		//4.关闭socket
		socket.close();
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41534115/article/details/82024225
今日推荐