注释部分是我不能通过的代码方式,留着以后研究。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
//服务器端
public class Server {
public static void main(String[] args) {
try{
//1.创建一个服务器端socket,指定绑定的端口并监听此端口
ServerSocket ss = new ServerSocket(8888);
//2.用accept方法等待用户连接,没有等到时程序运行至此处于阻塞状态
System.out.println("监听中,等待客户端连接...");
/*等到请求后accept()方法返回socket对象*/
Socket socket=ss.accept();
System.out.println("连接成功!");
try {
// 读取客户端传过来信息的DataInputStream
DataInputStream in = new DataInputStream(socket
.getInputStream());
// 向客户端发送信息的DataOutputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());
// 获取控制台输入的Scanner
Scanner scanner = new Scanner(System.in);
while (true) {
// 读取来自客户端的信息
String accpet = in.readUTF();
System.out.println(accpet);
String send = scanner.nextLine();
System.out.println("服务器:" + send);
// 把服务器端的输入发给客户端
out.writeUTF("服务器:" + send);
}
/***
//接收客户端发来的消息所需的对象
InputStream is=socket.getInputStream();//字节输入流
InputStreamReader isr=new InputStreamReader(is);//包装为字符流
BufferedReader br=new BufferedReader(isr);//为字符流添加缓冲
//回消息给客户端所需的对象
OutputStream os=socket.getOutputStream();//字节输出流
PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
//获取控制台输入的Scanner
Scanner scanner = new Scanner(System.in);
String sp;
while(true)
{
//从客户端读数据
System.out.println("[From Client]:"+br.readLine());
System.out.println("1");
//向客户端输出
sp=scanner.nextLine();
pw.write(sp);
pw.flush();
System.out.println("[You Say]:"+sp);
}
***/
} catch (Exception e){}
finally{
socket.close();
ss.close();
}
}catch(Exception e){}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;
//客户端
public class Client {
public static void main(String[] args) {
try {
//创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("localhost",8888);
System.out.println("已经连接到服务器,端口8888!");
try {
// 读取服务器端传过来信息的DataInputStream
DataInputStream in = new DataInputStream(socket
.getInputStream());
// 向服务器端发送信息的DataOutputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());
// 装饰标准输入流,用于从控制台输入
Scanner scanner = new Scanner(System.in);
while (true) {
String send = scanner.nextLine();
System.out.println("客户端:" + send);
// 把从控制台得到的信息传送给服务器
out.writeUTF("客户端:" + send);
// 读取来自服务器的信息
String accpet = in.readUTF();
System.out.println(accpet);
}
/***
//向服务器端发送信息所需的对象
OutputStream os=socket.getOutputStream();//字节输出流
PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
//接收服务器端回的消息所需的对象
InputStream is=socket.getInputStream();//字节输入流
InputStreamReader isr=new InputStreamReader(is);//包装为字符流
BufferedReader br=new BufferedReader(isr);//为字符流添加缓冲
//获取控制台输入的Scanner
Scanner scanner = new Scanner(System.in);
String sp;
while(true)
{
//向服务器输出
sp=scanner.nextLine();
pw.write(sp);
pw.flush();
System.out.println("[You Say]:"+sp);
//从服务器读数据
System.out.println("[From Server]:"+br.readLine());
}
***/
}catch (Exception e){}
finally{
socket.close();
}
}catch(Exception e){}
}
}
运行结果:
参考:socket