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

运用Java中socket编程实现简单的服务器客户端收发信息程序

2018-01-13 18:27 981 查看
1.socket编程实现

服务器端先初始化Socket对象,再与端口绑定(bind),然后在端口进行监听(listen),调用accept阻塞,等待客户端连接。这时如果有客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。





import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
* @author 58380
*
* 服务器端
*/
public class TestServer extends JFrame {

/**
* 消息显示栏
*/
JTextArea jta;

public TestServer() {

try {
//获取界面
this.getUi();

byte[] b = new byte[1024];

System.out.println("服务器在9999端口监听...");
ServerSocket ss = new ServerSocket(9999);

while(true) {
//监听
Socket socket = ss.accept();

InputStream os = new DataInputStream(socket.getInputStream());
os.read(b);

String str = new String(b);
jta.append("从客户端接收:" + str + "\n");
}
} catch(Exception e) {

e.printStackTrace();
}

}

/**
* 获取通信主界面
*/
private void getUi() {

jta = new JTextArea();

this.add(jta, "Center");

this.setTitle("服务器");
this.setSize(300, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {

new TestServer();
}
}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
* @author 58380
*
* 客户端
*/
public class TestClient extends JFrame implements ActionListener {

/**
* 消息输入框
*/
JTextField jtf;

/**
* 发送按钮
*/
JButton jb;

/**
* 消息显示栏
*/
JTextArea jta;

/**
* 主Panel
*/
JPanel jp1;

/**
* 副Panel
*/
JPanel jp2;

public TestClient() {

//获取界面
this.getUi();
}

/**
* 获取通信主界面
*/
private void getUi() {

jta = new JTextArea();
jtf = new JTextField(15);
jb = new JButton("发送");
jb.addActionListener(this);

jp2 = new JPanel();
jp2.add(jtf);
jp2.add(jb);

this.add(jta, "Center");
this.add(jp2, "South");

this.setTitle("客户端");
this.setSize(300, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {

new TestClient();
}

@Override
public void actionPerformed(ActionEvent e) {

//触发发送按钮
if(e.getSource() == jb) {

String str = jtf.getText();

if(null != str) {
byte[] b = str.getBytes();
try{
Socket socket = new Socket("127.0.0.1", 9999);
OutputStream is = new DataOutputStream(socket.getOutputStream());
is.write(b);
}catch(Exception e1){
e1.printStackTrace();
}
jta.append("向服务器发送:" +  str + "\n");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐