黑马程序员技术交流社区
标题:
【记录】代码练习-网络编程
[打印本页]
作者:
Kevin.Kang
时间:
2015-8-7 17:10
标题:
【记录】代码练习-网络编程
package com.kxg_01;
import java.io.IOException;
import java.net.InetAddress;
public class InetAddrssDemo {
public static void main(String[] args) throws IOException {
// public static InetAddress getByName(String host):在给定主机名的情况下确定主机的 IP
// 地址。
InetAddress address = InetAddress.getByName("10.164.23.26");
// public String getHostName():获取此 IP 地址的主机名
String name = address.getHostName();
// public String getHostAddress():返回 IP 地址
String ip = address.getHostAddress();
System.out.println(name + ":" + ip);
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-8-7 17:31
UDP发送端:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*
* UDP协议发送数据:
* 1.创建发送端Socket对象
* 2.创建数据,并把数据打包
* 3.调用Socket对象的发送方法发送数据包
* 4.释放资源
*/
public class InetAddressDemo2 {
public static void main(String[] args) throws IOException {
// UDP协议利用DatagramSocket类创建Socket对象
DatagramSocket ds = new DatagramSocket();
// DatagramPacket类:此类表示数据报包
// public DatagramPacket(byte[] buf,int length, InetAddress address,int
// port)打包数据
// 创建数据
byte[] bys = "hello,java".getBytes();
// 长度
int length = bys.length;
// 获取IP
InetAddress adress = InetAddress.getByName("10.164.22.254");
// 定义端口
int port = 48264;
// 打包数据
DatagramPacket dp = new DatagramPacket(bys, length, adress, port);
// 发送数据
ds.send(dp);
// 释放资源
ds.close();
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-8-7 18:11
UDP接收端:
package com.kxg_02;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*
* UDP协议接受数据:
* 1.创建接收端Socket对象
* 2.创建一个空数据包(接收发来的数据)
* 3.调用Socket对象的接收方法接受数据
* 4.解析数据,并显示控制台
* 5.释放资源
*/
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
// public DatagramSocket(int port):指定端口的Socket对象
// 注意:需要和发送端端口一致
DatagramSocket ds = new DatagramSocket(48264);
// public DatagramPacket(byte[] buf,int length):用来接收长度为 length 的数据包
byte[] bys = new byte[1024];
int length = bys.length;
DatagramPacket dp = new DatagramPacket(bys, length);
// public void receive(DatagramPacket p):从此套接字接收数据报包
ds.receive(dp);
// 解析数据包,并显示控制台
// 获取发送者IP
InetAddress address = dp.getAddress();
String ip = address.getHostAddress();
// public byte[] getData():返回数据缓冲区
byte[] bys2 = dp.getData();
// public int getLength():接收到的数据的长度
int length2 = dp.getLength();
// 转为字符串类型并输出
String s = new String(bys2, 0, length2);
System.out.println(ip + ":" + s);
// 释放资源
ds.close();
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-8-7 18:17
简化版:
发送端:
package com.kxg_03;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*
* UDP协议发送数据:
* 1.创建发送端Socket对象
* 2.创建数据,并把数据打包
* 3.调用Socket对象的发送方法发送数据包
* 4.释放资源
*/
public class SendDemo {
public static void main(String[] args) throws IOException {
// UDP协议利用DatagramSocket类创建Socket对象
DatagramSocket ds = new DatagramSocket();
// DatagramPacket类:此类表示数据报包
// public DatagramPacket(byte[] buf,int length, InetAddress address,int
// port)打包数据
byte[] bys = "hello,UDP".getBytes();
// 打包数据
DatagramPacket dp = new DatagramPacket(bys, bys.length,
InetAddress.getByName("10.164.22.254"), 48264);
// 发送数据
ds.send(dp);
// 释放资源
ds.close();
}
}
复制代码
接收端:
package com.kxg_03;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
* UDP协议接受数据:
* 1.创建接收端Socket对象
* 2.创建一个空数据包(接收发来的数据)
* 3.调用Socket对象的接收方法接受数据
* 4.解析数据,并显示控制台
* 5.释放资源
*/
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
// public DatagramSocket(int port):指定端口的Socket对象
// 注意:需要和发送端端口一致
DatagramSocket ds = new DatagramSocket(48264);
// public DatagramPacket(byte[] buf,int length):用来接收长度为 length 的数据包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
// public void receive(DatagramPacket p):从此套接字接收数据报包
ds.receive(dp);
// 解析数据包,并显示控制台
// 获取发送者IP
String ip = dp.getAddress().getHostAddress();
// 转为字符串类型并输出
String s = new String(dp.getData(), 0, dp.getLength());
System.out.println(ip + ":" + s);
// 释放资源
ds.close();
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-8-7 19:54
TCP客户端:
package com.kxg_06;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*
* TCP协议发送数据:
* 1.创建发送端口的Socket对象
* 2.获取输出流,写数据
* 3.释放资源
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
// public Socket(String host,int port)
// 创建一个流套接字并将其连接到指定主机上的指定端口号
Socket s = new Socket("10.164.22.254", 48264);
// 获取输出流
// public OutputStream getOutputStream():返回此套接字的输出流。
OutputStream os = s.getOutputStream();
os.write("hello,TCP".getBytes());
// 释放资源
s.close();
}
}
复制代码
TCP服务器端:
package com.kxg_06;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* TCP协议接收数据:
* 1.创建接收端的Socket对象
* 2.监听客户端连接,返回一个对应的Socket对象
* 3.获取输入流,读取数据显示在控制台
* 4.释放资源
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
// ServerSocket类:此类实现服务器套接字。服务器套接字等待请求通过网络传入
// public ServerSocket(int port)
// 创建绑定到特定端口的服务器套接字
ServerSocket ss = new ServerSocket(48264);
// public Socket accept()
// 监听客户端连接,返回一个对应的Socket对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
// public InputStream getInputStream():获取输入流
InputStream is = s.getInputStream();
// 解析数据并输出控制台
byte[] bys = new byte[1024];
int len = is.read(bys);
String str = new String(bys, 0, len);
System.out.println(ip + ":" + str);
// 释放资源
s.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2