1.软件架构
2.网络编程三要素
3.ip
1.ipv4
2.ipv6
//获取inetaddress的对象
inetaddress address = inetaddress.getbyname("127.0.0.1");
4.端口号
5.协议
1.udp协议
udp协议发送数据:
public class send{
public static void main(string[] args) throws ioexception {
//创建datagramsocket对象
datagramsocket ds = new datagramsocket();
//打包数据
string str = "你好!!";
byte[] bytes = str.getbytes();
inetaddress address = inetaddress.getbyname("127.0.0.1");
int port = 10006;
datagrampacket dp = new datagrampacket(bytes, bytes.length, address, port);
//发送数据
ds.send(dp);
//释放资源
ds.close();
}
}
udp协议接收数据:
public class receive{
public static void main(string[] args) throws ioexception {
//创建datagramsocket对象:接收时绑定的端口号要与发送时的端口保持一致
datagramsocket ds = new datagramsocket(10086);
//接收数据包
byte[] bytes = new byte[1024];
datagrampacket dp = new datagrampacket(bytes, bytes.length);
ds.receive(dp);
//解析数据包
byte[] data = dp.getdata();
int length = dp.getlength();
inetaddress address = dp.getaddress();
int port = dp.getport();
system.out.println("接收到数据:" + new string(data, 0, length));
system.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口号发出的");
//释放资源
ds.close();
}
}
1.单播
2.组播
3.广播
2.tcp协议
客户端发送数据:
public class client {
public static void main(string[] args) throws ioexception {
//发送数据
//创建socket对象
socket socket = new socket("127.0.0.1", 10001);
//从连接通道中获取输出流
outputstream os = socket.getoutputstream();
//写出数据
os.write("你好".getbytes());
//释放资源
os.close();
socket.close();
}
}
服务器接收数据:
public class server {
public static void main(string[] args) throws ioexception {
//接收数据
//
serversocket ss = new serversocket(10001);
//监听用户的连接
socket socket = ss.accept();
//从连接通道中获取输入流数据
inputstream is = socket.getinputstream();
//解决中文乱码
inputstreamreader isr = new inputstreamreader(is);
//使用缓冲流提高读取效率
bufferedreader br = new bufferedreader(isr);
int b;
while ((b = br.read()) != -1) {
system.out.println((char) b);
}
//释放资源
socket.close();
ss.close();
}
}
发表评论