java实现客户端与服务器通信

swing与java.net实现,客户端发送信息给服务器,服务器返回信息给客户端。
java实现客户端与服务器通信_第1张图片
客户端程序 WeChatClient.java

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//将信息发送给服务器 127.0.0.1 3333 接收并显示
public class WeChatClient implements ActionListener{
        private JTextArea incoming;//接收区域
        private JTextField outgoing;//发送区域
        private PrintWriter writer;//
        private BufferedReader reader;//
        private Socket socket;//
        public static void main(String[] args){
                WeChatClient client=new WeChatClient();
                client.go();
}
        public void go(){
                JFrame frame=new JFrame();
                JPanel panel=new JPanel();
                incoming=new JTextArea(15,50);//15行,50列
                incoming.setLineWrap(true);//设置自动换行
                incoming.setWrapStyleWord(true);//设置单词后换行
                incoming.setEditable(false);//设置为不可编辑
                JScrollPane scroller=new JScrollPane(incoming);
                scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
                scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
                outgoing=new JTextField(20);//20列
                JButton sendButton=new JButton("发送");
                sendButton.addActionListener(this);
                panel.add(scroller);
                panel.add(outgoing);
                panel.add(sendButton);
                setUpNetWorking();
                Thread readThread=new Thread(new ReceiveRunnable());
                readThread.start();
                frame.getContentPane().add(BorderLayout.CENTER,panel);
                frame.setSize(400,500);
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//设置socket,与服务器连接
        public void setUpNetWork(){
         try{
                        socket=new Socket("127.0.0.1",3333);
                        reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        writer=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

}catch(IOException e ){
                        e.printStackTrace();
}

}
//监听按钮是否按下,发送
        public void actionPerformed(ActionEvent e){
//              if(!outgoing.getText()){
                        String line=outgoing.getText();
                        writer.println(line);

//}
}
//开启新线程接收信息
        class ReceiveRunnable implements Runnable{
//如何接收
                public void run(){
                        String line;
                        try{
                        while((line=reader.readLine())!=null){
//                              line=reader.readLine();
                                incoming.append(line+"\n");
}
}catch(IOException e){e.printStackTrace();}
}
}
//      class SendButtonListener implements ActionListener{
//              public void actionPerformed(ActionEvent e){
//                      System.out.println("click");            
//}

}

服务器端程序 SimpleServer.java

import java.io.*;
import java.net.*;
//服务器,接收客户端发送的信息并显示,再将相同信息发送给客户端
public class SimpleServer{
        public static void main(String[] args){
                SimpleServer server=new SimpleServer();
                server.start();
}
        public void start(){
try{
                ServerSocket soc=new ServerSocket(3333);//端口3333
                Socket socket=soc.accept();
                BufferedReader read=new BufferedReader(new InputStreamReader(socket.getInputStream()));//读取socket输入流
                PrintWriter write=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//输出流
                while(true){
                        String  line;
                        while((line=read.readLine())!=null){
                                System.out.println(line);
                                write.println(line);//发送
}
}

}catch(IOException e)
{
                e.printStackTrace();
}
}
}

待续实现:
与其他IP 主机通信,打包发送给别人使用,因不了解如果没有安装jre包的其他平台如何运行java虚拟机。

你可能感兴趣的:(java实现客户端与服务器通信)