实现代码:
package udptcp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Ex1 {
public static void main(String[] args) throws Exception {//接收端
// TODO Auto-generated method stub
byte[] buf=new byte[1024];//创建一个长度为1024的字节数组,用于接收数据
//定义一个DatagramSocket对象,监听的端口号为8001
DatagramSocket ds=new DatagramSocket(8001);
//定义一个DatagramPacket对象,用于接收数据
DatagramPacket dp=new DatagramPacket(buf, 1024);
System.out.println("等待接收数据");
ds.receive(dp);//等待接收数据,如果没有,则会阻塞
String str=new String(dp.getData(), 0, dp.getLength())+"from"+dp.getAddress().getHostAddress()+dp.getPort();
System.out.println(str);
ds.close();
}
}
package udptcp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Ex2 {
public static void main(String[] args) throws Exception {//发送端
// TODO Auto-generated method stub
//创建一个DatagramSocket对象
DatagramSocket ds=new DatagramSocket(3000);
String str="Hello world";//要发送的数据
//创建一个要发送的数据包
DatagramPacket dp=new DatagramPacket(str.getBytes(), str.length(),InetAddress.getByName("localhost"),8001);
System.out.println("发送信息");
ds.send(dp);//发送数据
ds.close();//释放资源
}
}
运行结果:
实现代码:
package test;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Ex3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
new TCPServer().listen();
}
}
//TCP服务端
class TCPServer{
private static final int PORT=8002;//定义一个端口号
public void listen() throws Exception{//定义一个listen方法,抛出一个异常
ServerSocket ss=new ServerSocket(PORT);//创建一个对象
Socket client=ss.accept();//调用accept()接收数据
OutputStream os=client.getOutputStream();//获取客户端的输出流
System.out.println("开始于客户端交互数据");
os.write(("Hello, world!").getBytes());//当客户端连接到服务端时,向客户输出数据
Thread.sleep(5000);//模拟执行其他功能占用的时间
System.out.println("结束与客户端交互数据");
os.close();
client.close();
}
}
package test;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Ex4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class TCPClient{
private static final int PORT=8002;//定义一个端口号
public void listen() throws Exception{//定义一个listen方法,抛出一个异常
Socket client=new Socket(InetAddress.getLocalHost(), PORT);
InputStream is=client.getInputStream();//
byte[] buf=new byte[1024];//定义1024个字节数组的缓冲区
int len=is.read(buf);//
System.out.println(new String(buf,0,len));
client.close();
}
}