Javaの、TCP / IP、UDPプロトコルの簡単な概要

1. UDPおよびTCP / IP差

UDP
1コネクション指向のデータ転送は、特に安全ではない
コネクションレス伝送速度ので2.
コネクション指向、パケット損失は、データ転送が存在するので、前記
伝送することができるように、区別せずに4 UDPクライアントとサーバーそして、受信
UDPプロトコルは、シーンを使用するには
、ライブ、オンラインゲームを

TCP / IP
1.接続指向の、より安全なデータ転送
2.接続指向、すべての配信が遅くなるので
指向の接続3.、安全なデータ転送
4. TCP / IPプロトコルは、サーバーとクライアントの明確な概念である
TCP / IPプロトコル使用シナリオの
クライアントのログイン、データのダウンロード、ファイル転送

2. IPクラス

SUNの提供の開発者は、IPアドレスのクラスを使用
InetAddressのの
一般的な方法:
; InetAddressのはgetLocalHost()
クラスオブジェクトのIPアドレスを取得する
のInetAddressのgetByName(文字列strを);
指定されたホスト名に対応するオブジェクトのIPアドレスを取得します
(文字列のInetAddress [] getAllByNameのをSTR);
すべてのクラスオブジェクトに対応する指定されたホスト名、ドメイン名またはIPアドレスを取得します。

package com.qfedu.a_ip;

import java.net.InetAddress;
import java.net.UnknownHostException;

/*
 * IP类演示
 */
public class Demo1 {
	public static void main(String[] args) throws UnknownHostException {
		InetAddress localHost = InetAddress.getLocalHost();
		System.out.println(localHost);
		
		InetAddress byName = InetAddress.getByName("DESKTOP-M89SDP7");
		System.out.println(byName);
		
		InetAddress byName2 = InetAddress.getByName("www.4399.com");
		System.out.println(byName2);
		
		System.out.println("----------------------------------");
		
		InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");
		for (InetAddress inetAddress : allByName) {
			System.out.println(inetAddress);
		}
		
		System.out.println("----------------------------------");
		InetAddress[] allByName1 = InetAddress.getAllByName("www.taobao.com");
		for (InetAddress inetAddress : allByName1) {
			System.out.println(inetAddress);
		}
		
		System.out.println("----------------------------------");
		InetAddress[] allByName2 = InetAddress.getAllByName("www.jd.com");
		for (InetAddress inetAddress : allByName2) {
			System.out.println(inetAddress);
		}
		
	}
}

3. UDPデータ伝送

ユーザ・データグラム・プロトコルの
データ転送のすべての操作が実行されるパッケージングデータのパケット転送モードを使用して、クライアント・サーバに対応する概念はありません、とだけ送信部と受信端

ソケットソケット
データ転送動作は、2台のコンピュータ間で対応するソケットのデータ転送を持っている必要があり、必要とされます。UDPプロトコルはプロトコルUDPソケットが存在しなければならない、ここで使用される
;たDatagramSocket()
伝送プロトコルUDPソケット物体側作成し
たDatagramSocket(INTポート);
必要は[ポート]をリッスンするUDPプロトコルを、受信ソケットオブジェクトを作成する指定

エンドの送信パケットのパッキング方法
のDatagramPacketののDatagramPacketの(バイト[] BUF、INT長、InetAddressのアドレス、INTポート);
BUF:転送データに必要なバイト配列
の長さ:アレイ内の現在のバイトは、データ容量のバイト数である
アドレスは:物体側のIPアドレスを受信する
受信側に対応するポート番号:ポート

パケットを受信する受信端は、実施態様
本明細書ブランクパケット有する
のDatagramPacket(バイト[] BUF、INT長)のDatagramPacketのを、
BUF:バイト配列バッファは、典型的には、1024の整数倍である
長さ:現在のバイト配列バッファの容量

UDPコードが実証します

3.1送信端

プロセス:
1.ソケットに対応するUDPサーバ送信側の作成
に指定されたデータが必要で、対応するデータパケットを準備2.
送信データを送信3.
4.閉じるUDP送信端を

package com.qfedu.b_udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
流程:
	1. 创建UDP服务器对应的发送端Socket
	2. 准备对应数据包,需要带有指定数据
	3. 发送数据 send
	4. 关闭UDP发送端
 */
public class SenderDemo1 {
	public static void main(String[] args) throws IOException {
		System.out.println("发送端启动");
		// 创建对应的Socket
		DatagramSocket socket = new DatagramSocket();
		
		// 准备数据包
		byte[] bytes = "今天中午吃蒸羊羔...".getBytes();
		DatagramPacket packet = new DatagramPacket(bytes,  // 字节数组数据
				bytes.length,  // 字节数组数据长度
				InetAddress.getLocalHost(),  // 指定接收端IP地址
				8848); // 8848对应端口号
		
		// 发送数据包
		socket.send(packet);
		
		// 关闭UDP发送端
		socket.close();
	}
}	

3.2受信側

プロセス:
1. UDPサービス、および指定したポート上のリスニングが
新しい空のパケット作成2.
3.ソケットを介してデータを受信
端部を受け入れる4.閉じるUDPサービス

package com.qfedu.b_udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*
流程:
	1. 打开UDP服务,并且监听指定端口
	2. 创建新的空数据包
	3. 通过Socket接收数据 receive
	4. 关闭UDP服务接收端
 */
public class ReceiveDemo1 {
	public static void main(String[] args) throws IOException {
		// 创建Socket监听端口
		DatagramSocket socket = new DatagramSocket(8848);
		
		// 准备空数据包
		byte[] buf = new byte[1024];
		DatagramPacket packet = new DatagramPacket(buf, buf.length);
		
		// 接收数据
		socket.receive(packet);
		
		// 确定接收到的字节长度
		int length = packet.getLength();
		
		System.out.println(new String(buf, 0, length));
		
		// 关闭socket
		socket.close();
		
	}
}
公開された10元の記事 ウォン称賛10 ビュー4490

おすすめ

転載: blog.csdn.net/wangjizhan2010/article/details/104660736