黑马程序员————网路编程UDP和TCP协议

网路编程:

Inetaddress类:此类便是互联网协议(IP)地址

(常用方法)static Inetaddress getByName(String host):在给定机名的情况下确定主机的IP地址

String getHostaddress():返回IP地址字符串

public String getHostName():获取此IP地址名称

例如:

public class Demo {
public static void main(String[] args) throws UnknownHostException {


InetAddress add = InetAddress.getByName("Hello-C");


String ip = add.getHostAddress();


String pcName = add.getHostName();


System.out.println("ip : " + ip + " pcName = " + pcName);


}
}

Socket类:此类实现客户端套接字。套接字是两台机器通信的端点。

使用UDP发送数据:


1.封装Socket:DatagramSocket;


 2.准备要发送的数据,IP地址,端口号;


 3.封装数据包:DatagramPacket


 4.使用DatagramSocket的方法,将数据包发送出去;

public class Demo {


public static void main(String[] args) throws IOException{


//1.封装Socket:DatagramSocket;


DatagramSocket socket = new DatagramSocket();


//2.准备要发送的数据,IP地址,端口号;
//1).数据


byte[] byteArray = "你好,这是使用UDP发送的数据!".getBytes();


//2).IP地址


InetAddress add = InetAddress.getByName("Lenovo-PC");


//3).端口


int port = 8888;


//3. 封装数据包:DatagramPacket


DatagramPacket packet = new DatagramPacket(byteArray,
byteArray.length,
add,
port);
//4.使用DatagramSocket的方法,将数据包发送出去;


socket.send(packet);


//5.释放资源
socket.close();

System.out.println("发送完毕!");

}
}

使用TPC协议接收和发送数据:


TCP是面向连接的,在发送数据之前,一定要建立连接,否则抛出异常;


 所以要求"接收方"一定要先启动;

public class TCPSend {

public static void main(String[] args) throws IOException {


//1.实例化一个Socket

//端口是接收端使用端口。意思是:发送给192.168.40.148机器的8888端口


Socket socket = new Socket("192.168.40.148",8888);


//因为要发送数据,所以获取一个"输出流"


OutputStream out = socket.getOutputStream();


//发送数据


out.write("你好,这是使用TCP发送的数据,请接收!!".getBytes());


//关闭流;
out.close();
socket.close();
}
}

public class TCPReceive {


public static void main(String[] args) throws IOException{


//1.实例化一个ServerSocket


ServerSocket server = new ServerSocket(8888);


//2.等待连接


System.out.println("接收方等待连接......");


Socket socket = server.accept();


System.out.println("获取到一个连接!");


//3.要读取数据,获取输入流


InputStream in = socket.getInputStream();


//4.读取数据


byte[] byteArray = new byte[1024];


int len = in.read(byteArray);//因为对方发一次,这里只读一次;


String str = new String(byteArray,0,len);


System.out.println("接收到信息:" + str);


//5.释放资源
server.close();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值