52、TCP/IP 编程基础(国际标准)传输控制协议TCP,网络互联协议IP
网络编程的目的:直接或间接通过网络协议与其它计算机进行通讯
准确定义网络上一台或多台主机 InetAddress.getByName(String arg);
找到主机后如何可靠高效地进行数据传输
IP定位网络中的一台主机
端口定位主机的一个网络程序
InetAddress : 对象表示网络中的一个地址
Socket 对象 (套接字): 端口号与IP地址的组合得出网络套接字
连接到远程主机
绑定到端口
接收从远程机器来的连接请求
监听到达的数据
发送数据
接收数据
关闭连接
实例代码:(服务端监听端口,客户端连接至服务端,两者进行通信)
@Test
public void testServerSocket() throws IOException{
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("监听端口号8888");
Socket socket = serverSocket.accept();
OutputStream out = socket.getOutputStream();
DataOutputStream dou = new DataOutputStream(out);
dou.writeUTF("此条信息~~来自服务器");
serverSocket.close();
socket.close();
}
@Test
public void testSocket() throws IOException{
InetAddress ip = InetAddress.getLocalHost();
String ipAddress = ip.getHostAddress();
System.out.println(ipAddress);
Socket socket = new Socket(ipAddress,8888);
InputStream in = socket.getInputStream();
DataInputStream din = new DataInputStream(in);
System.out.println(din.readUTF());
din.close();
socket.close();
}
实例代码:(服务端发送文件给客户端,客户端接收并存至硬盘!)
@Test
public void testFileSocket() throws IOException{
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("等待连接......");
Socket socket = serverSocket.accept();
System.out.println("连接进入");
InputStream in = this.getClass().getResourceAsStream("爱很美.jpg");
byte [] buffer = new byte[1024];
int len = 0;
OutputStream out = socket.getOutputStream();
while((len = in.read(buffer)) != -1){
out.write(buffer,0,len);
}
in.close();
out.close();
socket.close();
serverSocket.close();
}
@Test
public void testFileSocketClient() throws IOException{
InetAddress ip = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(ip,8888);
InputStream in = socket.getInputStream();
OutputStream out = new FileOutputStream("E:\\爱很美.jpg");
byte[] buffer = new byte[1024];
int len = 0;
while((len = in.read(buffer)) != -1){
out.write(buffer,0, len);
}
System.out.println("获取完成");
in.close();
out.close();
socket.close();
}
UDP(DatagramSocket 和 DatagramPacket 实现基于UDP协议网络程序)
DatagramPacket:对象封装了UDP数据报,在数据报中包含了客户端的IP地址和端口号以及服务器的IP地址和端口号
DatagramSocket: 发送和接收系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达
更新时间:2016年10月8日