—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
首先来进行服务端的编写,服务端几个小步骤:
//1、创建socket
ServerSocket server = new ServerSocket();
Socket socket = server.accept(); //监听作用,该方法为阻塞式
//2、创建流
DataInputStream ds = new DataInputStream(socket.getInputStream());
//3、进行数据的读写
String message = ds.readUTF();
System.out.println(message);
然后编写客户端,与服务器端大致相同,少了监听的方法。
//1、创建socket
Socket s = new Socket("127.0.0.1",6665);.
//2、创建流
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
//3、进行数据的读写
Scanner scanner = new Scanner(System.in);
String string=scanner.next();
dos.writeUTF(string);
dos.flush();
//4、用完了关闭
dos.close();
s.close();
以上就是大体的流程,然而我们需要多个人同时进入聊天室,则需要改成多线程的,代码如下
服务端:
import java.io.*;
import java.net.*;
public class Chat {
public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(6665);
} catch (IOException e) {
System.out.println("端口被占用,创建端口失败。");
}
Socket socket = null;
while (true){
try {
socket = server.accept();
} catch (IOException e) {
System.out.println("客户端连接失败。");
}
new Thread(new Rev(socket)).start();
}
}
}
class Rev implements Runnable{
Socket socket = null;
Rev(Socket socket){
this.socket = socket;
}
public void run(){
String ip=socket.getInetAddress().toString();
try {
while(true){
DataInputStream ds = new DataInputStream(socket.getInputStream());
String message = ds.readUTF();
System.out.println(ip+": "+message);
}
} catch (IOException e) {
System.out.println("客户端"+ip+"已退出!");
}
}
}
客户端:
import java.net.*;
import java.io.*;
import java.util.*;
class Client{
public static void main(String args[]) throws Exception{
Socket s = new Socket("127.0.0.1",6665);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
while(true){
Scanner scanner = new Scanner(System.in);
String string=scanner.next();
if (string.equals("exit")){
System.out.println("退出了~");
s.shutdownInput();
dos.close();
s.close();
System.exit(0);
}
dos.writeUTF(string);
dos.flush();
}
}
}
—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————