您的位置:首页 > 理论基础 > 计算机网络

java网络编程学习详解和总结!

2017-08-12 17:12 676 查看
网络:网络编程三要素:1、IP地址:唯一标识网络上的每一台计算机两台计算机之间通信的必备有素2、端口号:计算机中应用的标号(代表一个应用程序)0-1024系统使用或保留端口,有效端口0-655363、通信协议:通信的规则TCP,UDPIP地址所对应的对象->InetAddress传输协议:1、UDP相当于发短信(有字数限制),不需要建立连接,数据包的大小限制在64K内,效率较高,不安全,容易丢包。2、TCP相当于打电话,需要建立连接,效率相对比较低,数据传输安全,三次握手完成。InetAddress类:
public class InetAddressDemo {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
InetAddress ia=InetAddress.getByName("www.baidu.com");
System.out.println(ia.getHostAddress());  //获取ip
System.out.println(ia.getHostName()); //获取主机名
InetAddress l = InetAddress.getLocalHost();  //获取本机的IP信息
System.out.println(l);
InetAddress[] ad = InetAddress.getAllByName("T"); //根据主机名返回所有IP地址
for(InetAddress s:ad){
System.out.println(s);
}
}
}
基于TCP协议的Socket编程:客户端:
public class Client {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Socket s=new Socket("127.0.0.1",8800);
BufferedReader line=new BufferedReader(new InputStreamReader(System.in));
OutputStream os = s.getOutputStream();
String str=null;
while((str=line.readLine())!=null){
if(str.equals("exit")){
break;
}
os.write(str.getBytes());
}
s.shutdownOutput();

s.shutdownInput();
os.close();
line.close();
s.close();
}
}
服务器端: 
public class Srever {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//		创建一个服务器端的套接字
ServerSocket ss=new ServerSocket(8800);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte b[]=new byte[1024];
while(is.read(b)!=-1){
System.out.println(new String(b));
}
s.shutdownInput();
}

}
UDP通信:Datagram(数据报):是分组交换的一种形式,就是把所传递的数据分段打成“包”,再传送出去。与传统的“连接型”分组交换不同,它属于“无连接型”,是把打包成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据报”。在开始通信之前不需要先连接好一条线路,各个数据报不一定都通过同一条路径传输。 UDP通讯服务器端:
public class UDP2 {public static void main(String[] args) {try {DatagramSocket ds=new DatagramSocket(4321);byte[] data=new byte[1024];//定义接受地缓冲区DatagramPacket dp=new DatagramPacket(data,data.length);ds.receive(dp);//接收数据包//以下是将接收到的字节数组转换为字符串并输出显示String mes=new String(dp.getData(),0,dp.getLength());System.out.println(mes);} catch (Exception e) {e.printStackTrace();}}}
UDP通讯客户端
public class UDP1 {public static void main(String[] args) {try {DatagramSocket ds=new Datagr4000amSocket(1234);String mes="你好,UDP2.";byte[] data=mes.getBytes();//将字符串转换为byte数组InetAddress ip=InetAddress.getByName("127.0.0.1");DatagramPacket dp=new DatagramPacket(data,data.length,ip,4321);ds.send(dp);//发送数据包} catch (Exception e) {e.printStackTrace();}}}
TCP与UDP的比较:1、使用UDP时,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。对于TCP协议,由于它是一个面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中多了一个连接建立的时间。2、使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。而TCP没有这方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。而TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: