- 1UDP完成数据的发送与接收
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();
}
}