TCP协议创建步骤:
import java.net.*;
import java.io.*;
/**
客户端负责发送数据:
步骤:
1、创建Socket对象,绑定IP和端口号
2、设置键盘录入
3、将内容写到服务器端
*/
class TCPClient{
/**
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
*/
public static void main(String args[])throws Exception{
Socket s = new Socket("192.168.51.23",8888);
BufferedReader buffr = new BufferedReader(new InputStreamReader(System.in));
/**
PrintWriter(OutputStream out, boolean autoFlush)
通过现有的 OutputStream 创建新的 PrintWriter。
*/
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String len = null;
while((len= buffr.readLine())!=null){
out.println(len);
}
buffr.close();
s.close();
}
}
/**
服务器端接收数据
步骤:
1、创建ServerSocket对象,设置绑定的端口号
2、调用accept方法获取客户端的Socket对象。
3、调用Socket.getOutputStream()对象将数据写到控制台上。
*/
class TCPServer{
public static void main(String args[])throws Exception{
/*
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
*/
ServerSocket ss = new ServerSocket(8888);
/**
accept()
侦听并接受到此套接字的连接。
*/
Socket s = ss.accept();
BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));
String len = null;
while((len=bufr.readLine())!=null){
System.out.println(len);
}
}
}
public class TCPTest{
public static void main(String args[]){}
}
UDP协议实例:
import java.io.*;
import java.net.*;
/**
* UDP客户端 发送信息。
* 步骤:
* 1、创建DatagramPacket对象,设置缓冲区、长度、连接服务器的端口号和IP
* 2、创建DatagramSocket对象,调用send方法发送。
* @author admin
*
*/
class UDPSend {
public static void main(String args[]) throws Exception{
//控制键盘输入。
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
//转换成byte数组,想服务器端发送
String len = null;
DatagramSocket ds = new DatagramSocket();
while((len = in.readLine())!=null){
if("over".equals(len))
break;
byte[] buf = len.getBytes();
DatagramPacket dgp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("192.168.51.23",10003) );
ds.send(dgp);
}
ds.close();
}
}
/**
* 服务器端接收数据:
* 步骤:
* 1、创建DatagramSocket对象,指定的端口。
* 2、创建DatagramPacket对象,准备一个数据包接收客户端传来的额数据
* 3、调用receive方法接收数据包。
* 4、将接收的数据包,通过IO解析到控制台中。
* @author admin
*
*/
class UDPRece {
public static void main(String args[]) throws Exception {
/**
* DatagramSocket(int port)
创建数据报套接字并将其绑定到本地主机上的指定端口。
*/
DatagramSocket ds = new DatagramSocket(10003);
/**
* DatagramPacket(byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。
*/
byte[] buf = new byte[1024];
while(true){
DatagramPacket dp= new DatagramPacket(buf, buf.length);
ds.receive(dp);
String str = new String(buf);
//获得客户端ip
String ip = dp.getAddress().getHostAddress();
System.out.println("IP::"+ip+"内容::"+str);
}
// ds.close();
}
}
/**
* DatagramPacket(byte[] buf, int length, SocketAddress address)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
* @author admin
*
*/
public class UDPTest {
public static void main(String[] args) throws Exception{
}
}