网络编程

IP地址

网络中主机的标识。

获取主机的地址

InetAddress i = InetAddress.getByName(“www.bilibili.com”);.
println(ⅰ.getHostAddress()); 
System.out.println(ⅰ.getHostName());

getByName()方法,根据提供的主机地址,返回一个InetAddress对象。通过返回的对象的方法来获取主机的地址/名称,如果找不对主机地址和名称的映射,则主机的名称也是地址。

本机的地址

获取本机地址的getLocalHost()

**TCP和UDP **

UDP:不需要建立连接,速度快,每个数据包的大小限定64KB,超出则分割数据包,可靠性低.

TCP :三次握手建立链接,速度相对慢,数据包大小没有限定,断开连接口停止发送数据,可靠性高.

UDP发送/接收数据

发送端设置发送端口号,如果不进行设置,会进行随机分配。接收端也要设置端口号,如果不进行设置,也会进行随机分配。 如果想要在指定接收端接受到数据,需要设置接收端口。

UDP代码:

发送端

import javax.xml.crypto.Data; 
import com.sun.org.apache.xml.internal.resolver.readers.ExtendedXMLCatalogReader; 
import java.net。*; 
class send {public static void main(String [] args)throws Exception 
{DatagramSocket ds = new DatagramSocket(); 
byte [] data =“我发送此消息”.getBytes(); 
DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName(“192.168.1.68”),2333); 
ds.send(DP); ds.close(); 
}
} 

接收端

import java.net.DatagramPacket;
 import java.net.DatagramSocket;
  class receive {public static void main(String [] args)throwsException
   {DatagramSocket ds = new DatagramSocket(2333); 
   byte [] data = new byte [1024]; DatagramPacket dp = new DatagramPacket(data,data.length);
    ds.receive(DP); System.out.println(“ip”+ dp.getAddress()。getHostName()。toString()); 
    String s = new String(dp.getData()); System.out.println(“data”+ s); 
    System.out.println(“port”+ dp.getPort()); ds.close();
    }
} 

TCP传输 -

TCP传输的建立:需要一个服务端和Ñ个客户端,客户端连接到服务端,与服务端进行通信。

插座:创建客户端ServerScoket:创建服务端。

利用TCP来进行客户端与服务端的通信,并通过服务端向客户端返回信息

客户端代码:

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; import java.net.Socket;
class serverClient 
{
public static void main(String [] args)throws Exception 
    {
    Socket s = new Socket(“192.168.1.43”,2333);
    BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); 
    BufferedReader bfr2 = new BufferedReader(new InputStreamReader(s.getInputStream())); 
    BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
    String line = null;
    while((line = bfr.readLine())!= null)
        {
        bfw.write(线); 
        bfw.newLine();
        bfw.flush(); 
        System.out.println(bfr2 .readLine());
        }
        
    }
} 

服务端代码:

 import java.io.BufferedReader; 
 import java.io.BufferedWriter; 
 import java.io.InputStreamReader;
  import java.io.OutputStreamWriter; 
  import java.net.ServerSocket; import java.net.Socket; 
  class serverManager {public static void main(String [] args)throws Exception 
  {
    ServerSocket ss = new ServerSocket(2333);
    Socket s = ss.accept();
    System.out.println(“IP ==”+ s.getInetAddress()。getHostAddress()+“已成功连接”);
    BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); 
    BufferedReader bfr2 = new BufferedReader(new InputStreamReader(s.getInputStream()));
     BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
     String line = null; 
     while((line = bfr2.readLine())!= null)
      {
        System.out.println(line); 
        bfw.write(line.toUpperCase());
        bfw.newLine(); 
        bfw.flush(); 
        } 
    }
}

服务端获取客户端的对象,使用相对应的对象的输入输出向客户端反馈信息,不会打乱。自动刷新,自动换行的优化方法

PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

URL对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值