
服务器类代码:
package chat
import java.io.*
import java.net.*
import java.util.*
/*服务器类*/
public class Server {
public List<Socket>socketList = new ArrayList<Socket>()//存放所有连接的客户端的集合
public ServerSocket server//服务器
public int portNum//端口号
public Server(int portNum){
this.portNum = portNum
}
public void innit(){
try {
server = new ServerSocket(portNum)
System.out.println("服务器开启成功!")
int socketNum = 0
while(true){
Socket socket = server.accept()/伍薯/被动等待客户端的连接
socketNum++
System.out.println("第"+socketNum+"个客户端连接成功!!")
socketList.add(socket)//连接的客户端存放到集腔差者合里面
new RWThread(socket).start()
}
} catch (IOException e) {
e.printStackTrace()
}
}
class RWThread extends Thread{//庆旅接收和发送消息的线程
public Socket socket
public RWThread(Socket socket){
this.socket = socket
}
public void run() {
super.run()
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))
while(true){
String message = br.readLine()
System.out.println(message)//接收客户端发来的消息
for(int i=0i<socketList.size()i++){//发送给所有连接的客户端
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socketList.get(i).getOutputStream()))
pw.println(message)
pw.flush()
}
}
} catch (IOException e) {
e.printStackTrace()
}
}
}
public static void main(String[] args) {
int portNum = 8888//创建服务器的端口号
Server server = new Server(portNum)
server.innit()
}
}
客户端类:
package chat
import java.io.*
import java.net.*
import java.util.*
/*客户端类*/
public class Client {
public Socket socket
public Client(){
Scanner sca = new Scanner(System.in)
try {
socket = new Socket("127.0.0.1",8888)//创建客户端
new ReadThread(socket).start()//开启读取从服务器端发来的信息
while(true){
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()))
String message = sca.nextLine()
pw.println(message)//向服务器发送信息
pw.flush()
}
} catch (UnknownHostException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
System.out.println("错误:服务器未开启!!!")
}
}
class ReadThread extends Thread{//读取服务器发来信息的线程
public Socket socket
public ReadThread(Socket socket){
this.socket = socket
}
public void run() {
super.run()
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))
while(true){
String message = br.readLine()
System.out.println(message)//输出信息
}
} catch (IOException e) {
e.printStackTrace()
}
}
}
public static void main(String[] args) {
Client client = new Client()
}
}
现打开服务器类,然后可以打开多个客户端进行聊天
首先,学习java GUI编程,学习监听器。建议看马士兵的视频。然后上网上down源代码,分析类,确定类的属性和方法。第一遍,就是跟着源码敲一遍,然后分腊段段看,一段一段的看友局腊懂,再实现。慢慢就会了。很有收获滴!http://download.csdn.net/detail/geniusice18/4919655#comment 这好滑是高仿QQ2012登录界面 源代码两种解决办法,第一种使用纯java的梁敏方式,使用组件JTextPane 或者JEditorPane 来显示图片和文字
第二橡银枝种使用JEditorPane,但是里面存放HTML代码. 用HTML来搏猜控制文字和图片的显示
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)