
正文
javaqq客户端代码 java设计登录界面代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎么用java开发qq群机器人 服务端 客户端?
Server.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Server {
private ListServerThread serverThreads;
private ServerSocket serverSocket;
public Server() throws IOException {
serverSocket = new ServerSocket(8025);
serverThreads = new ArrayListServerThread();
}
public ListServerThread getServerThreads() {
return serverThreads;
}
public void setServerThreads(ListServerThread serverThreads) {
this.serverThreads = serverThreads;
}
public ServerSocket getServerSocket() {
return serverSocket;
}
public void setServerSocket(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
public static void main(String[] args) {
Server server = null;
try {
server = new Server();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
try {
Socket socket;
Thread t;
while (true) {
socket = server.getServerSocket().accept();
ServerThread serverThread = new ServerThread(server, socket);
server.getServerThreads().add(serverThread);
t = new Thread(serverThread);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(String message, Socket socket) {
for (ServerThread serverThread : serverThreads) {
try {
serverThread.getDos().writeUTF(message);
} catch (IOException e) {
// e.printStackTrace();
System.out.println("推送消息给" + serverThread.getSocket().getRemoteSocketAddress() + "过程中发生javaqq客户端代码了错误.");
}
}
}
}
class ServerThread implements Runnable {
private Server server;
private Socket socket;
private DataInputStream dis;
private DataOutputStream dos;
public ServerThread(Server server, Socket socket) throws IOException {
this.server = server;
this.socket = socket;
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
}
public Server getServer() {
return server;
}
public void setServer(Server server) {
this.server = server;
}
public Socket getSocket() {
return socket;
}
public void setSocket(Socket socket) {
this.socket = socket;
}
public DataInputStream getDis() {
return dis;
}
public void setDis(DataInputStream dis) {
this.dis = dis;
}
public DataOutputStream getDos() {
return dos;
}
public void setDos(DataOutputStream dos) {
this.dos = dos;
}
public void run() {
String message = "";
while (!message.equals("logout")) {
try {
message = socket.getRemoteSocketAddress() + " say: " + dis.readUTF();
// System.out.println(message);
server.sendMessage(message, socket);
} catch (IOException e) {
//e.printStackTrace();
break;
}
}
server.getServerThreads().remove(this);
try {
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
private Socket socket;
private DataOutputStream dos;
private DataInputStream dis;
public Client() throws UnknownHostException, IOException {
socket = new Socket("127.0.0.1", 8025);
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
new Thread(new ClientThread(this)).start();
}
public Socket getSocket() {
return socket;
}
public void setSocket(Socket socket) {
this.socket = socket;
}
public DataOutputStream getDos() {
return dos;
}
public void setDos(DataOutputStream dos) {
this.dos = dos;
}
public DataInputStream getDis() {
return dis;
}
public void setDis(DataInputStream dis) {
this.dis = dis;
}
public void close() {
try {
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void sendMessage(String message) {
try {
dos.writeUTF(message);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Client client = null;
try {
client = new Client();
System.out.println(client.getSocket().getLocalPort());
} catch (IOException e) {
System.out.println("BUG");
e.printStackTrace();
System.exit(-1);
}
String message = "";
Scanner scanner = new Scanner(System.in);
while (!message.equals("logout")) {
message = scanner.nextLine();
// System.out.println(message);
client.sendMessage(message);
}
scanner.close();
client.close();
}
}
class ClientThread implements Runnable {
private Client client;
public ClientThread(Client client) {
super();
this.client = client;
}
@Override
public void run() {
try {
while (true) {
System.out.println(client.getDis().readUTF());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关问答
Q1: 用JAVA怎么写QQ
用java是可以写出qq的javaqq客户端代码,只不过用java开发c/s的软件不是java特长的javaqq客户端代码,javaqq客户端代码你要是真的想写,就写着练练手吧,最起码可以巩固java se上的知识。
具体怎么写,给javaqq客户端代码你个大概的思路吧,因为我没办法在这个有限的输入框内把所有的代码写完。
【1】先写出qq的简单界面
【2】给每个按钮添加监听
【3】按钮事件(方法)定义
【4】连接网络(socket)
【5】测试
【5】其他功能添加
【6】测试
Q2: 有谁知道QQ后台程序用JAVA怎么编写啊?
import java.io.*;
public class QQ_Manager {
private int max_user=1000;
private String[] userID;
private String[] userName;
private String[] userPW;
private String[] userIP;
private int userCounts;
private int userOnline;
private String fileName;
/**构造方法初始化数据文件等*/
QQ_Manager(String fileName){this.fileName=fileName;}
/**将现有的QQ用户和记录写入数据文件*/
public synchronized void write_userDataFile(String fileName) {
}
/**从数据文件中读取QQ用户记录*/
public synchronized void read_userDataFile(String fileName) {
}
/**用户来注册新的QQ号*/
public synchronized boolean regist_QQ(String userName,String PW){return false;}
/**QQ用户登陆处理*/
public synchronized boolean login_QQ(String id,String pw){return true;}
/**QQ用户离线处理*/
public synchronized boolean logout_QQ(String id, String pw){return false;}
/**返回QQ在线列表*/
public String get_QQList(){return null;}
}
Q3: 用java实现QQ登录界面怎么写
package ch10;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//定义该类继承自JFrame,实现ActionListener接口
public class LoginTest extends JFrame implements ActionListener
{
//创建JPanel对象
private JPanel jp=new JPanel();
//创建3个标并加入数组
JLabel name = new JLabel("请输入用户名");
JLabel password = new JLabel("请输入密码");
JLabel show = new JLabel("");
private JLabel[] jl={name,password,show};
//创建登陆和重置按扭并加入数组
JButton login = new JButton("登陆");
JButton reset = new JButton("重置");
private JButton[] jb={login,reset};
//创建文本框以及密码框
private JTextField jName=new JTextField();
private JPasswordField jPassword =new JPasswordField();
public LoginTest()
{
//设置布局管理器为空布局,这里自己摆放按钮、标签和文本框
jp.setLayout(null);
for(int i=0;i2;i++)
{
//设置标签和按扭的位置与大小
jl[i].setBounds(30,20+40*i,180,20);
jb[i].setBounds(30+110*i,100,80,20);
//添加标签和按扭到JPanel容器中
jp.add(jl[i]);
jp.add(jb[i]);
//为2个按钮注册动作事件监听器
jb[i].addActionListener(this);
}
//设置文本框的位置和大小,注意满足美观并足够用户名的长度
jName.setBounds(130,15,100,20);
//添加文本框到JPanel容器中
jp.add(jName);
//为文本框注册动作事件监听器
jName.addActionListener(this);
//设置密码框的位置和大小,注意满足美观和足够密码的长度
jPassword.setBounds(130,60,100,20);
//添加密码框到JPanel容器中
jp.add(jPassword);
//设置密码框中的回显字符,这里设置美元符号
jPassword.setEchoChar('$');
//为密码框注册动作事件监听器
jPassword.addActionListener(this);
//设置用于显示登陆状态的标签大小位置,并将其添加进JPanel容器
jl[2].setBounds(10,180,270,20);
jp.add(jl[2]);
//添加JPanel容器到窗体中
this.add(jp);
//设置窗体的标题、位置、大小、可见性及关闭动作
this.setTitle("登陆窗口");
this.setBounds(200,200,270,250);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//实现动作监听器接口中的方法actionPerformed
public void actionPerformed(ActionEvent e)
{
//如果事件源为文本框
if(e.getSource()==jName)
{
//切换输入焦点到密码框
jPassword.requestFocus();
}
//如果事件源为重置按扭
else if(e.getSource()==jb[1])
{
//清空姓名文本框、密码框和show标签中的所有信息
jl[2].setText("");
jName.setText("");
jPassword.setText("");
//让输入焦点回到文本框
jName.requestFocus();
}
//如果事件源为登陆按钮,则判断登录名和密码是否正确
else
{
//判断用户名和密码是否匹配
if(jName.getText().equals("lixiangguo")
String.valueOf(jPassword.getPassword()).equals("19801001"))
{
jl[2].setText("登陆成功,欢迎您的到来!");
}
else
{
jl[2].setText("对不起,您的用户名或密码错误!");
}
}
}
public static void main(String[] args)
{
//创建LoginTest窗体对象
new LoginTest();
}
}
这个简单点的
Q4: QQ客户端Java代码 问题 懂得进来看看吧 完全看不懂 求详细注释
new Thread(){
public void run(){
while(true){
实例一个线程
try {
ObjectInputStream ois=
new ObjectInputStream(
s.getInputStream());
打开流通道 接收信息
if("login".equals(type)){
ListString users=msg.getUserList();
if(dlm.getSize()==0){
for(int i=0;iusers.size();i++){
dlm.addElement(users.get(i));
}
如果type为‘login’的话获取msg中的userlist()
Object obj=ois.readObject();
Message msg=(Message)obj;
String type=msg.getType();
把接收的信息转成message类型 获取msg中的type信息
System.out.println("hhhh");
debug用 无意义
if("login".equals(type)){
ListString users=msg.getUserList();
if(dlm.getSize()==0){
for(int i=0;iusers.size();i++){
dlm.addElement(users.get(i));
}
如果type为“login”拿就获取msg中的userlist() 如果dlm中信息量为0 则把userlist()内信息赋给dlm
}else{
dlm.addElement(msg.getFromUser());
}
否则dlm增加信息为msg中的formuser();
String oldMes=showMessage.getText();
String newMes=msg.getSendContent();
if(oldMes==null||"".equals(oldMes)){
showMessage.setText(newMes);
}else{
String allMes=oldMes+"\n"+newMes;
showMessage.setText(allMes);
}
获取原始信息 新增信息 若原始信息为空则显示新信息 否则显示原始信息 + 换行 + 新信息
else if("logout".equals(type)){
String name2=msg.getFromUser();
if(name2.equals(name)){
dlm.removeAllElements();
}else{
dlm.removeAllElements();
ListString users=msg.getUserList();
for(int i=0;iusers.size();i++){
dlm.addElement(users.get(i));
}
}
如果type==“logout” 如果下线的用户是自己则删除dlm所有信息 如果不是自己则dlm删除后重新获取userlist()
下面的都被注释掉了
javaqq客户端代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java设计登录界面代码、javaqq客户端代码的信息别忘了在本站进行查找喔。







