**/*编写服务器端程序:
- 1.创建一个服务器套接字(ServerSocket),绑定到指定端口;
- 2.调用accept方法,侦听来自客户端的请求,如果客户发出请求,则接受连接,返回通信套接字(Socket);
- 3.创建线程来处理客户机:在线程中调用Socketgetlnput StreamgetOutputStream方法,获得输入/输出流;
-
每连上一个客户端,就主动给客户端发送一句“欢迎光临!”
- 使用Arraylist存放连上服务端的所有客户端
-
当接收到客户端发送来的消息的时候,将这条消息转发给是有连上服务端的所有客户端关闭通信套接字,
-
关闭服务器套接字。编写客户端程序:
- 4.创建一个套接字(Socket), 向服务器的侦听端口发出请求;
- 5.与服务器正确连接后,调用Socket的getlnputStream和getOutputStream方法,
- 获得输入/输出流,启动线程开始网络数据的接收和发送;在命令行给服务端发送消息当接收到
- 服务端发来的消息的时候,将内容显示在控制台上关闭通信套接字
- 6.代码规范,有注释
/*
public class Demo extends Thread{
Socket socket;
public Demo(Socket so) {
socket=so;
}
public void run() {
try {
System.out.println("客户端");
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("连接上了");
pw.flush();
try {
this.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 打印
InputStream is=socket.getInputStream();
byte buf[]=new byte[1000];
int len=0;
while((len=is.read(buf))!=-1) {
String info=new String(buf,0,len);
System.out.println("服务器说:"+info);
}
socket.shutdownInput();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
// 创建一个套接字(Socket), 向服务器的侦听端口发出请求;
Socket soc=new Socket("localhost",9090);
Demo demo=new Demo(soc);
demo.start();;
}
}
public class Demo_f extends Thread{
Socket socket;
ArrayList<Socket> list=new ArrayList<Socket>();
public Demo_f(Socket so) {
socket=so;
list.add(so);
}
public void run()
try {
System.out.println("服务器");
// 输出流
OutputStream os=socket.getOutputStream();
// 打印语句
PrintWriter pw=new PrintWriter(os);
//打印
pw.write("欢迎光临");
// 清除缓存
pw.flush();
this.sleep(2000);
// 输入流
InputStream is=socket.getInputStream();
byte buf[]=new byte[1000];
int len=0;
while((len=is.read(buf))!=-1) {
String info=new String(buf,0,len);
System.out.println("客户说:"+info);
}
socket.shutdownInput();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
//1.创建一个服务器套接字(ServerSocket),绑定到指定端口;
ServerSocket server=new ServerSocket(9090); // 端口号
while(true) {
//2、调用accept方法,侦听来自客户端的请求,如果客户发出请求,则接受连接,返回通信套接字(Socket);
Socket so=server.accept();
Demo_f de=new Demo_f(so);
de.start();
}
}
}