2020-8-13 网络编程_02

InetAdress:

1.public static InetAdress getBytes(String host):获取主机ip地址的封装对象;

2.public String getHostName():返回主机名;

3.public String getHostAdress():获取ip地址;

端口:

物理端口:

网卡口;

逻辑端口:

1.每个网络程序都有至少一个逻辑端口;

2.用于表示进程的逻辑地址,不同进程的标识;

3.有效端口:0-65535,其中0-1024为系统使用或保留端口;

协议:

通信的规则:

UDP:不需要建立连接,不可靠协议,速度快,有数据限制;

TCP:建立连接通道,数据无限制,速度慢,可靠;

Socket:

网络套接字;

Socket编程:网络编程,套接字编程;

Socket编程包含了ip地址和端口;

原理机制:

通信两端都要有Socket;

网络通信就是Socket之间的通信;

数据再两个Socket之间通过IO传输;

UDP发送数据:

1.创建发送端Socket对象;

DatagramSocket s=new DatagramSocket();

2.创建数据,并把数据打包;

byte[] bys="你好".getBytes();

DatagramPacket dp=new DatagramPacket(bys,bys.length,InetAdress.getByname("127.0.0.1"),10086);

3.调用Socket对象发送方法发送数据;

s.send(dp);

4.释放资源;

s.close();

UDP接收数据:

1.创建接收端Socket对象(指定端口);

DatagramSocket ds=new DatagramSocket(10086);

2.创建数据包;

byte[] bys=new byte[1024];

DatagramPacket dp=new DatagramPacket(bys,bys.length);

3.接收数据;

ds.receive(dp);

4.解析并输出;

byte[] bys2=dp.getData();

sout(new String(bys2,0,dp.getlength));

5.释放资源:
ds.close();

TCP:

TCP发送数据:

1.创建发送端的Socket对象;

Socket s=new Socket("127.0.0.1",10086);

2.获取输出流,写数据;

OutputStream os=s.getOutputStream();

os.write("你好".getBytes());

3.释放资源;

s.close();

TCP接收数据:

1.创建接收端Socket对象;

ServerSocket ss=new ServerSocket(10086);

2.监听客户端链接,返回一个对应的Socket对象;

Socket s=ss.accept();

3.获取输入流读取数据并输出;

InputStream is=s.getInputStream();

byte[] bys=new byte[1024];

int len;

while((len=is.read)!=-1){

	sout(new String(bys,0,len));

}

4.释放资源;

ss.close();

s.close();

注意事项:

1.先开服务器端,再开客户端;

2.read和readLine是阻塞方法,如果服务器端想要在读取数据后给用户端反馈,用户端需要执行shutdownOutput()方法以读取反馈,否则会一直阻塞;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值