TCP通信的 实现发1收1
package TCP1;
//完成TCP通信的 实现发1收1
import java.io.DataOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class Client {
public static void main(String[] args)throws Exception {
//1:创建Socket对象并同时请求服务端程序的链接
Socket socket= new Socket("127.0.0.1",8888);
//2:从Socket通信管道中得到一个字节输出流 用来数据发给到服务器
OutputStream os= socket.getOutputStream();
//3:把低级的输出流封装成数据输出流
DataOutputStream dos= new DataOutputStream(os);
//开始写数据出去了
dos.writeUTF("在一起好吗?");
System.out.println("发送完成");
dos.close(); //释放资源IO流
socket.close(); //释放网络资源TCP通信
}
}
package TCP1;
// 完成TCP通信服务端 实现发1收1
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("===============启动服务端================");
//1:创建serverSocket的对象 同时为服务端注册端口
ServerSocket serverSocket = new ServerSocket(8888);
//2:使用serverSocket 对象 调用accept 方法 等待客户端连接请求
Socket socket= serverSocket.accept();
//3:从socket管道中得到一个字节输入流
InputStream inputStream = socket.getInputStream();
//4: 把原始的字节输入流封装成输入流
DataInputStream dis= new DataInputStream(inputStream);
//5:使用数据输入流 读取客户端发箍来的数据
String rs= dis.readUTF();
System.out.println(rs);
// 6:谁发的数据获取IP
System.out.println(socket.getRemoteSocketAddress());
System.out.println(socket.getPort());
dis.close(); //释放资源IO流
socket.close(); //释放网络资源TCP通信
}
}
完成TCP通信的 多发多收
package TCP2;
//完成TCP通信的 多发多收
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args)throws Exception {
//1:创建Socket对象并同时请求服务端程序的链接
Socket socket= new Socket("127.0.0.1",8888);
//2:从Socket通信管道中得到一个字节输出流 用来数据发给到服务器
OutputStream os= socket.getOutputStream();
//3:把低级的输出流封装成数据输出流
DataOutputStream dos= new DataOutputStream(os);
Scanner sr=new Scanner(System.in);
while (true) {
//开始写数据出去了
System.out.print("请说: ");
String msg= sr.nextLine();
dos.writeUTF(msg);
dos.flush();
//用户输入exit 退出
if ("exit".equals(msg)){
System.out.println("欢迎下次光临 退出成功");
dos.close();
socket.close();
break;
}
}
}
}
package TCP2;
// 完成TCP通信服务端 多发多收
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("===============服务端启动成功================");
//1:创建serverSocket的对象 同时为服务端注册端口
ServerSocket serverSocket = new ServerSocket(8888);
//2:使用serverSocket 对象 调用accept 方法 等待客户端连接请求
Socket socket= serverSocket.accept();
//3:从socket管道中得到一个字节输入流
InputStream inputStream = socket.getInputStream();
//4: 把原始的字节输入流封装成输入流
DataInputStream dis= new DataInputStream(inputStream);
while (true) {
//5:使用数据输入流 读取客户端发箍来的数据
try {
String rs= dis.readUTF();
System.out.println(rs);
} catch (Exception e) {
System.out.println(socket.getRemoteSocketAddress()+"离线了!");
socket.close();
dis.close();
break;
}
// 6:谁发的数据获取IP
// System.out.println(socket.getRemoteSocketAddress());
//System.out.println(socket.getPort());
}
}
}