我是编程新手。我无法从服务器向客户端发送字符串,但我可以将表单客户端发送到服务器,但只能发送一个字符串。当我单击客户端程序中的“发送”按钮时,它会发送字符串,但之后它变得不可用。服务器程序中的“发送”按钮不起作用。这是代码:
客户计划:
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
public class Client extends JFrame {
private final int WIDTH = 310;
private final int HEIGHT=300;
private JPanel panel;
private JButton btn;
private JTextArea txt;
private JLabel label;
private JTextField field;
public Client(){
setSize(WIDTH,HEIGHT);
setTitle("Client");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
btn = new JButton("Send");
txt = new JTextArea();
field=new JTextField(20);
btn.addActionListener(new btnListener());
add(new JScrollPane(txt), BorderLayout.CENTER);
add(btn, BorderLayout.SOUTH);
add (field, BorderLayout.NORTH);
setVisible(true);
}
public static void main(String a[]) throws IOException
{
Client c = new Clientt();
}
private class btnListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev)
{
try{
Socket sc = new Socket("localhost",5555);
DataOutputStream out=new DataOutputStream(sc.getOutputStream());
DataInputStream in =new DataInputStream(sc.getInputStream());
if(field.getText()!=""){
String x = field.getText();
out.writeUTF(x);
field.setText("");
}
String s=new String(in.readUTF());
txt.append("Server: "+s);
}
catch(UnknownHostException e){
}
catch (IOException e){
}
}
}
}
服务器程序:
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
public class Server extends JFrame {
private final int WIDTH = 310;
private final int HEIGHT=300;
private JButton btn;
private JPanel panel;
private JTextArea txt;
private JTextField field;
private JLabel label;
public Server(){
setSize(WIDTH,HEIGHT);
setTitle("Server");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn = new JButton("Send");
txt= new JTextArea();
field= new JTextField(20);
btn.addActionListener(new btnListener());
add(btn, BorderLayout.SOUTH);
add(txt, BorderLayout.CENTER);
add(field, BorderLayout.NORTH);
setVisible(true);
}
public void printtext() throws IOException{
ServerSocket server = new ServerSocket(5555,10);
Socket soc = server.accept();
DataInputStream in =new DataInputStream(soc.getInputStream());
String y=new String(in.readUTF());
txt.append("Client: "+y);
}
public static void main(String args[])throws IOException
{
Server c = new Serverr();
c.printtext();
}
private class btnListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev)
{
try{
ServerSocket server = new ServerSocket(5555,10);
Socket soc = server.accept();
DataOutputStream out=new DataOutputStream(soc.getOutputStream());
String s = field.getText();
out.writeUTF(s);
}
catch(UnknownHostException e){
}
catch (IOException e){
}
}
}
}