服务端:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
//服务端先启动
public class serverTest {
public static void main(String[] args) {
System.out.println("我是服务器------------------");
InputStream read=null;//读消息
OutputStream write=null;//发消息
Scanner input=new Scanner(System.in);
ServerSocket servet=null;//服务器套接字(等用户连接)
Socket socket=null;//套接字(由客户端发起,唯一和客户端的管道,用于读写信息)
try {
servet=new ServerSocket(9999);//创建服务器套接字,传递端口号(尽量写大)
System.out.println("服务器启动成功");
socket=servet.accept();//等待客户端连接(如果客户端没有连接,程序会卡死)
System.out.println("客户端连接成功:"+socket.getRemoteSocketAddress());//通过管道获取客户端的信息
read=socket.getInputStream();//获取管道读消息对象
write=socket.getOutputStream();//获取管道写对象
while(true){
//先接受客户端发来的消息
byte[] btsfa=new byte[1024];//每次长度发短
int len=0;
len=read.read(btsfa);//读取到bts中(程序卡死,等待客户端发来消息)
String str=new String(btsfa,0,len);//客户端发来的文字
System.out.println("客户端发来--》"+str);
if(str.equals("88")){//客户端发来88退出循环
break;
}
//给客户端发消息
byte[] btsjie=new byte[1024];//每次长度发短
System.out.println("请输入要发送的消息");
str=input.nextLine();//控制输入一句话
btsjie=str.getBytes("utf-8");
write.write(btsjie);//给客户端发送消息
if(str.equals("88")){
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(write!=null) write.close();
if(read!=null)read.close();
if(socket!=null) socket.close();
if(servet!=null)servet.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
客户端:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class clientTest {
public static void main(String[] args) {
System.out.println("我是客户端-----------------------");
Socket socket = null;// 套接字
InputStream read = null;// 读取消息
OutputStream write = null;// 写消息
Scanner input = new Scanner(System.in);
try {
socket=new Socket("127.0.0.1",9999);//客户端主动发起连接,通过IP和端口创建套接字对象
System.out.println("连接服务器成功");
read=socket.getInputStream();//读流
write=socket.getOutputStream();//写流
while(true){
//先发送消息
byte btsfa[]=new byte[1024];
int len=0;
System.out.println("请输入要发送的消息");
String str=input.nextLine();//控制台输入一行
btsfa=str.getBytes("utf-8");//设置编码格式
write.write(btsfa);//往服务器写数据
if(str.equals("88")){
break;
}
//后接受消息
byte btsjie[]=new byte[1024];
len=read.read(btsjie);
str=new String(btsjie,0,len);
System.out.println("服务器传来--》"+str);
if(str.equals("88")){
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (write != null)
write.close();
if (read != null)
read.close();
if (socket != null)
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
先启动服务端
在启动客户端
客户端输入要发的消息 回车
看服务端:
服务端输入消息
看客户端:
任意一方,输入88 都会是双方退出(停止程序)