TCPプロトコルのC / Sプログラム
TCPプロトコルのCSプログラムを作成するには、2つのクラスを使用する必要があります。1 。
サーバー
を構築するためのServerSocket 2.クライアントを構築する
ためのソケット2者は、ソケット(ソケット、通信エンドポイント)を使用して通信します。
ServerSocket
サーバーの作成に使用されます。作成後、ポート番号がバインドされます。
その後、サーバーはクライアントが接続するのを待つことができ、クライアントが接続されるたびに、サーバーはクライアントとの通信に使用される新しいSocketオブジェクトを取得します。
一般的な工法:
ServerSocket(int port);
TCP / IPプロトコルに基づいてサーバーを作成し、指定されたポート番号をバインドします。
注:パラメーターportの範囲は0-65535(1025-65535を推奨)です。
一般的な方法:
Socket accept();
クライアントが接続するのを待ちます。このメソッドは、新しいクライアントが正常に接続するまでスレッドをブロックします。Socketオブジェクトが返された後、スレッドは実行を継続し
void close();
ます。占有されているポート番号を解放し、サーバーをシャットダウンします。
ソケット
これは、2台のコンピューター間の通信のエンドポイントであり、ネットワークドライバーがアプリケーションプログラミングのインターフェイスを提供するための一連の標準およびメカニズムです。
工法:
Socket(String ip、int port)
はソケットを作成し、指定されたIPとポート番号でサーバーに接続します。
パラメーター1.サーバーのIPアドレス。
パラメーター2.サーバーソフトウェアのポート番号。。。
一般的な方法:
- OutputStream getOutputStream();
返されるのは
- InputStream getInputStream();
、通信のもう一方の端を指す出力ストリームが、通信のもう一方の端を指す入力ストリームが
- void close();
ソケットを閉じることです。
注:
ネットワークプログラミングでは、入力ストリームと出力ストリームを取得する操作クライアントとサーバー用です。クライアント
の入力ストリームは相対的であり、入力はサーバーの出力ストリームのコンテンツです。
クライアントの出力ストリームはサーバーの入力ストリームに出力されます。
したがって、それを使用する場合、次のルールに注意する必要があります。クライアントとサーバーがストリームを取得する順序を逆にする必要があります。
たとえば、クライアントが最初に入力ストリームを取得し、次にサーバーが最初に出力ストリームを取得する必要があります。
package com.test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//搭建服务器
ServerSocket server = new ServerSocket(55565);
System.out.println("服务器建立完毕,等待连接!");
//等待客户端连接
Socket socket = server.accept();
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("欢迎连接服务器!");
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("收到了客户端的消息:"+text);
System.out.println("服务器连接完毕!");
}
}
服务器建立完毕,等待连接!
收到了客户端的消息:你好,服务器
服务器连接完毕!
package com.test;
import java.io.*;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",55565);
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("收到消息:"+text);
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("你好,服务器");
}
}
收到消息:欢迎连接服务器!