Javaでネットワークプログラミング上の
1.基本
ネットワークは、これらのデバイスのデバイス(コンピュータ)の複数の上で実行するように書かれたプログラムは、ネットワークを介して接続されている手段をプログラミングします。
Javaではjava.netパッケージは、クラスおよびインタフェースが含まれています。彼らは、低レベルの通信の詳細を提供しています。我々は、具体的な問題に対処するために、これらのクラスやインタフェースを使用することができます。
インターネットの三つの基礎:URLのhtml HTTP
2つの一般的なネットワークプロトコルパッケージjava.netのサポートを提供します:
UDP :.頭字語のユーザーデータグラムプロトコルは、非接続指向、危険なプロトコルは、通常、以下60Kより単純な、小さなオーバーヘッド、高効率、限られたサイズであります
TCP:3ウェイハンドシェイクに基づく接続指向の、安全で、低効率:1、応答では、データ伝送接続を2ダイヤル3
2.UDP
1.UDP基本的なプロセス:送信側
使用DatagramSocketの指定ポート、送信元を作成します
準備データは、バイト配列に変換する必要があります
カプセル化されたパッケージのDatagramPacket
送信ラッピングセンド(のDatagramPacket p)を
リソースを解放
実施例1つの送信側:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPSend1 {
public static void main(String[] args) throws Exception {
System.out.println("发送方启动中...");
// 1.使用DatagramSocket指定端口,创建发送端
DatagramSocket client = new DatagramSocket(6666);
// 2.准备数据 一定要转成字节数组
String data = "落霞与孤鹜齐飞,秋水共长天一色";
byte[] datas = data.getBytes();
// 3.封装成DatagramPacket包裹
DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 8888));
// 4.发送包裹send(DatagramPacket p)
client.send(packet);
// 5.释放资源
client.close();
}
}
复制代码
2.UDP基本的なプロセス:受信側
使用DatagramSocketの指定ポートは、受信側を作成します
準備ができた容器、のDatagramPacketに包まれたパッケージ
ブロッキングは、パッケージが(のDatagramPacket p)とを受け取る受信します
データ分析
リソースを解放
実施例1の受信側:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceive1 {
public static void main(String[] args) throws Exception {
System.out.println("接收端准备中.... ");
// 1.使用DatagramSocket指定端口,创建接收端
DatagramSocket server = new DatagramSocket(8888);
// 2.准备容器,封装成DatagramPacket包裹
byte[] container = new byte[1024 * 60];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
// 3.阻塞式接收包裹receive(DatagramPacket p)
server.receive(packet);
// 4.分析数据
byte[] datas = packet.getData();
int len = packet.getLength();
System.out.println(new String(datas, 0, len));
// 5.释放资源
server.close();
}
}
复制代码
3.TCP
1.TCP基本的なプロセス:クライアント
指定されたホスト上の指定したポート番号にストリームソケットを作成するためのカスタム・クライアントソケットソケット(文字列のホスト、int型ポート)
データを準備します
IO操作を書きます
リソースを解放
クライアントの例2:
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client01 {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("-------------Client-----------");
//1.定义客户端 Socket Socket(String host, int port)
Socket client=new Socket("127.0.0.1",7777);
//2.准备数据
String str="name=zhangsan&pwd=123";
//3.写出 直接从管道中获取流
DataOutputStream data=new DataOutputStream(client.getOutputStream());
data.writeUTF(str);
data.flush();
//4.关闭
data.close();
client.close();
}
}
复制代码
2.TCP基本的なプロセス:サーバー
定義されているサーバのServerSocketのServerSocket(int port)指定されたポートにバインドされたサーバソケットを作成します。
モニターをブロックすると、()を受け入れるソケット
接続ソケットを監視し、それを受け入れます
IO操作
リソースを解放
サーバー例2:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server01 {
public static void main(String[] args) throws IOException {
System.out.println("-------------Server-----------");
//1.定义服务端
ServerSocket server=new ServerSocket(7777);
//2.阻塞式监听 Socket accept()
Socket client=server.accept();
//3.io操作,直接从管道中获得流
DataInputStream in=new DataInputStream( client.getInputStream());
String str=in.readUTF();
System.out.println(str);
//4.释放资源
in.close();
client.close();
server.close();
}
}
复制代码