JAva基礎知識回顧のjava Socket学習(二)--TCPプロトコルプログラミング
13449 ワード
TCP転送(転送制御プロトコル):TCPプロトコルは、接続に向けた信頼性の高いバイトストリームサービスである.クライアント側とサーバ側が互いにデータを交換する前に、双方の間にTCP接続を確立してから、データの転送を行う必要がある.1台のホストからのワードスロットルをインターネットの他のホストに間違いなく送信する.送信側で上位層を転送する責任を負うバイトストリームは、メッセージセグメントに分けて下位層に渡される.受信側では、メッセージの再編成を担当して上層部に渡す.TCPはタイムアウト再送、重複データの廃棄、検査データ、流量制御などの機能を提供し、データが一端から他端に伝達されることを保証する.
サービス:
クライアント:
出力:192.168.1.101:tcpプレゼンテーション:また来た!
サービス側はクライアントのデータを受け取った後、クライアントにメッセージを返します.
クライアント:
結果:
クライアントから送信されたメッセージを受信
サービス:
package cn.itcast.net.p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// , 。
/*
* tcp :
* 1, socket 。 ServerSocket 。
* 2, , 。
* 3, 。
* 4, socket
* 。
* 5, 。 , 。
*/
//1 。
ServerSocket ss = new ServerSocket(10002);
//2, 。
Socket s = ss.accept();// .
String ip = s.getInetAddress().getHostAddress();
//3, socket ,
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(ip+":"+text);
s.close();
ss.close();
}
}
クライアント:
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
//
/*
* Tcp , 。
* 1, tcp socket 。 Socket 。
* 。 。
* 2, , 。
* socket , 。 , , 。
* , Socket 。
* getOutputStream(), getInputStream() 。
* 3, , 。
* 4, 。
*/
// socket 。
Socket socket = new Socket("192.168.1.101",10002);
// socket 。
OutputStream out = socket.getOutputStream();
// 。
out.write("tcp : !".getBytes());
// 。
socket.close();
}
}
出力:192.168.1.101:tcpプレゼンテーション:また来た!
サービス側はクライアントのデータを受け取った後、クライアントにメッセージを返します.
package cn.itcast.net.p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo2 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// , 。
/*
* tcp :
* 1, socket 。 ServerSocket 。
* 2, , 。
* 3, 。
* 4, socket
* 。
* 5, 。 , 。
*/
//1 。
ServerSocket ss = new ServerSocket(10002);
//2, 。
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
//3, socket ,
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(ip+":"+text);
// socket
OutputStream out = s.getOutputStream();
out.write(" ".getBytes());
s.close();
ss.close();
}
}
クライアント:
package cn.itcast.net.p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo2 {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
//
/*
* Tcp , 。
* 1, tcp socket 。 Socket 。
* 。 。
* 2, , 。
* socket , 。 , , 。
* , Socket 。
* getOutputStream(), getInputStream() 。
* 3, , 。
* 4, 。
*/
Socket socket = new Socket("192.168.1.101",10002);
OutputStream out = socket.getOutputStream();
out.write("tcp : !".getBytes());
// , socket 。
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(text);
// 。
socket.close();
}
}
結果:
クライアントから送信されたメッセージを受信