/**
* TCP:传输控制协议,采用三方握手的方式,保证准确的连接操作。
* UDP:数据报协议,发送数据报,例如:手机短信或者是QQ消息。
*/
/**
* TCP服务器端程序
*/
public class Main {
public static void main(String[] args) {
try {
ServerSocket s1 = new ServerSocket(57712); //创建一个服务器端socket
System.out.println("服务器已启动,正在等待连接中....");
Socket s = s1.accept(); //等待客户端连接,会阻塞
String info = "Hello World ---\n";
//构造一个字节输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(info);
bw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* TCP客户端程序
*/
public class ClientDemo {
public static void main(String[] args){
try {
System.out.println("good");
//创建一个客户端的socket对象(IP/主机名,端口号)
Socket s1 = new Socket("172.31.150.27",57712);
System.out.println("与服务器连接成功");
//构造一个字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s1.getInputStream()));
String info = br.readLine();
System.out.println(info);
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* ECHO服务器端程序
*/
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12347);
System.out.println("Server has started. is Waiting....");
boolean flag = true;
while(flag){
System.out.println("is waiting for connection....");
Socket s0 = s.accept();
System.out.println("客户端IP:"+s0.getInetAddress().getHostAddress()+" 已连接!");
//获取输入输出流
BufferedReader br = new BufferedReader(
new InputStreamReader(s0.getInputStream()));
PrintStream ps = new PrintStream(
new BufferedOutputStream(s0.getOutputStream()));
boolean bool = true; //循环接收数据
while(bool){
String info = br.readLine();
if(info==null || "bye".equals(info)){
bool = false;
}else{
System.out.println(info);
ps.println("echo:"+info);
ps.flush();
}
}
ps.close();
br.close();
}
}
}
/**
* ECHO客户端程序
*/
public class ClientDemo {
public static void main(String[] args) throws IOException{
//创建一个客户端的socket对象(IP/主机名,端口号)
Socket s0 = new Socket("172.31.150.27",12347);
System.out.println("与服务器连接成功");
Scanner input = new Scanner(System.in);
boolean flag = true;
PrintStream ps = new PrintStream(
new BufferedOutputStream(s0.getOutputStream()));
BufferedReader br = new BufferedReader(
new InputStreamReader(s0.getInputStream()));
while(flag){
System.out.println("请输入:");
String info = input.next();
if("bye".equals(info)){
flag = false;
}else{
ps.println(info);
ps.flush();
System.out.println(br.readLine());
}
}
br.close();
ps.close();
}
}