您的位置:首页 > 编程语言 > Java开发

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

2016-07-24 10:41 639 查看
swing与java.net实现,客户端发送信息给服务器,服务器返回信息给客户端。



客户端程序 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 服务器 通信 swing