您的位置:首页 > 编程语言 > Java开发

初学Java Socket,实现超简单的聊天程序

2016-03-02 21:20 441 查看
刚开始学Java网络编程,要用到Socket,虽然教程视频有实例,但还是要自己动手写出来。

不过功能实在太简单:

Client说一句之后必须由Server说,不能由Client连续说;反之也一样。

Server端:

//ChatServer.java
import java.net.*;
import java.io.*;

//有可能出现异常的地方一定要抛出异常,并最好用try...catch,不宜用throws
public class ChatServer{
public static void main(String[] args){
ServerSocket ss = null;
try{
ss = new ServerSocket(4567);//定义ServerSocket时必须指定端口号
System.out.println("Server Start Done!");
}catch(Exception e){
System.out.println("Server Start ERROR!");
System.exit(0);
}
Socket s = null;
try{
s = ss.accept();//建立连接是Server端也会有个Socket实现,用来和Client端对应从而进行连接
System.out.println("Connected!");
}catch(Exception e){
System.out.println("Server ERROR while connecting!");
}
try{
//从Client端获取数据,BufferedReader接受InputStreamReader型数据
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
//向Client端发送数据
PrintWriter output = new PrintWriter(s.getOutputStream());
//从键盘获取输入,System.in是InputStream类型
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client: " + reader.readLine());
String imsg = input.readLine();
while(!imsg.equals("Over")){
output.println(imsg);//println()方法把字符串打印到PrintWriter,传给Client
output.flush();//数据清空
System.out.println("Server: " + imsg);
System.out.println("Client: " + reader.readLine());
imsg = input.readLine();
}
//数据传输结束后一定要关闭各种连接,逆序依次关闭
input.close();
output.close();
reader.close();
s.close();
}catch(Exception e){
System.out.println("Server ERROR!"+e);
}
}
}


Client端:

//ChatClient.java
import java.net.*;
import java.io.*;

public class ChatClient{
public static void main(String[] args){
Socket s = null;
try{
s = new Socket("127.0.0.1", 4567);//定义Socket时需要制定IP和Port
System.out.println("Client Start Done!");
}catch(Exception e){
System.out.println("Client Start ERROR!");
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter output = new PrintWriter(s.getOutputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String msg = input.readLine();
while(!msg.equals("Over")){
output.println(msg);
output.flush();
System.out.println("Client: " + msg);
System.out.println("Server: " + reader.readLine());
msg = input.readLine();
}
input.close();
output.close();
reader.close();
s.close();
}catch(Exception e){
System.out.println("Client ERROR!"+e);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: