gpt4 book ai didi

java - "Exception in thread "AWT-EventQueue-0 "java.lang.NullPointerException"Java 套接字编程中的错误

转载 作者:行者123 更新时间:2023-12-01 22:19:50 24 4
gpt4 key购买 nike

我正在尝试使用 GUI 制作一个基本的聊天应用程序,它在没有 GUI 的情况下几乎可以完美工作,但我想在 GUI 上构建该应用程序。我想要做的是,当我按下按钮时发送一条我在 JTextField 上写的消息。但是每当我尝试单击按钮通过按钮将数据发送到服务器时,应用程序都会抛出此错误。

gui.java

package program;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

public class gui
{
Client client;
server _server;
JFrame pencere;
JButton button;
JTextArea area;
JTextField type;
public gui(){

pencere = new JFrame("oxChat");
pencere.setSize(640,480);
pencere.setLayout(null);
button = new JButton("gönder");
button.addActionListener( new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
client.sendData("Hello");
}
});
area = new JTextArea();
type = new JTextField();
pencere.add(type);
pencere.add(area);
pencere.add(button);
area.setBounds(0,0,640,350);
type.setBounds(0,370,640,25);
button.setBounds(640/2-80/2,400,80,30);
pencere.setVisible(true);
pencere.setResizable(false);
pencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

_server = new server();
_server.start(4000);
Client client = new Client("127.0.0.1",4000);
}

public static void main(String[] args) throws IOException {
gui app = new gui();
}

}

服务器.java

package program;

// A Java program for a Server
import java.net.*;
import java.io.*;

public class server
{
private Socket socket;
private ServerSocket server;
// constructor with port
public void start(int port){
try {
server = new ServerSocket(port);
while(true){
socket = server.accept();
new Thread (new ConnectionHandler(socket)).start();
}
}catch(IOException i){

}
}
}

class ConnectionHandler extends Thread{
private Socket socket = null;
private DataInputStream in = null;
private DataOutputStream out = null;
public ConnectionHandler(Socket socket){
this.socket=socket;
}
@Override
public void run() {
try
{
System.out.println("Waiting for a client ...");
System.out.println("Client accepted");
in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
out = new DataOutputStream(socket.getOutputStream());

String line = "";

// reads message from client until "Over" is sent
while (!line.equals("Over"))
{
try
{
line = in.readUTF();
System.out.println(line);
}
catch(IOException i)
{
System.out.println(i);
}
}
System.out.println("Closing connection");

// close connection
socket.close();
in.close();
}
catch(IOException i)
{
System.out.println(i);
}
}
}

客户端.java

package program;

import java.net.*;
import java.io.*;
import java.util.Scanner;

public class Client
{
// initialize socket and input output streams
private Socket socket = null;
private DataInputStream input = null;
private DataOutputStream out = null;

// constructor to put ip address and port
public Client(String address, int port)
{
// establish a connection
try
{
socket = new Socket(address, port);
System.out.println("Connected");

// takes input from terminal
input = new DataInputStream(socket.getInputStream());

// sends output to the socket
out = new DataOutputStream(socket.getOutputStream());
}
catch(UnknownHostException u)
{
System.out.println(u);
}
catch(IOException i)
{
System.out.println(i);
}

}

void sendData(String data){
try{
out.writeUTF(data);
}catch(IOException i)
{
}
}
}

完整错误代码

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at program.gui$1.actionPerformed(gui.java:27) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6401) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

最佳答案

客户端

 Client client = new Client("127.0.0.1",4000);

正在用相同的名称隐藏该字段。

更改为

client = new Client("127.0.0.1",4000);

关于java - "Exception in thread "AWT-EventQueue-0 "java.lang.NullPointerException"Java 套接字编程中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com