简单的服务器和客户端程序代码实例
来源:互联网 发布:机器视觉有哪些算法 编辑:程序博客网 时间:2024/04/30 00:09
简单的服务器和客户端程序代码实例
练习Socket,DataInputStream,DataOutputStream,Thread,ActionListener的应用,功能很简单就是客户端输入用户名回车服务器校验用户名是否合法,我定义了只有jiqimiao时才是合法的。
服务器端代码如下:
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
/**
* 服务器端程序
* @author 左杰
*
*/
public class TestServer extends JFrame {
/**
*
*/
private static final long serialVersionUID = -4148974450944551683L;
private JTextArea jta = new JTextArea();
public static void main(String[] args) {
new TestServer();
}
public TestServer() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(jta), BorderLayout.CENTER);
setTitle("server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
ServerSocket serverSocket = new ServerSocket(5000);//绑定服务器端口
jta.append("server start at " + new Date() + " ");
while (true) {
Socket socket = serverSocket.accept();//服务器监听
//启动监听线程
HandleClint thread = new HandleClint(socket);
thread.start();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 接收和发送客户端的线程
* @author 左杰
*
*/
class HandleClint extends Thread {
private Socket socket;
public HandleClint(Socket socket) {
this.socket = socket;
}
public void run() {
try {
DataInputStream inputFromClient = new DataInputStream(socket
.getInputStream());
DataOutputStream outputToClient = new DataOutputStream(socket
.getOutputStream());
while (true) {
String ins = DataInputStream.readUTF(inputFromClient);//接收客户端信息
String outs = "您不是合法用户";
if (ins.equals("jiqimiao")) {
outs = "欢迎您:" + ins;
}
outputToClient.writeUTF(outs);//发送到客户端信息
jta.append(outs + " ");
}
} catch (Exception e) {
}
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
/**
* 服务器端程序
* @author 左杰
*
*/
public class TestServer extends JFrame {
/**
*
*/
private static final long serialVersionUID = -4148974450944551683L;
private JTextArea jta = new JTextArea();
public static void main(String[] args) {
new TestServer();
}
public TestServer() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(jta), BorderLayout.CENTER);
setTitle("server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
ServerSocket serverSocket = new ServerSocket(5000);//绑定服务器端口
jta.append("server start at " + new Date() + " ");
while (true) {
Socket socket = serverSocket.accept();//服务器监听
//启动监听线程
HandleClint thread = new HandleClint(socket);
thread.start();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 接收和发送客户端的线程
* @author 左杰
*
*/
class HandleClint extends Thread {
private Socket socket;
public HandleClint(Socket socket) {
this.socket = socket;
}
public void run() {
try {
DataInputStream inputFromClient = new DataInputStream(socket
.getInputStream());
DataOutputStream outputToClient = new DataOutputStream(socket
.getOutputStream());
while (true) {
String ins = DataInputStream.readUTF(inputFromClient);//接收客户端信息
String outs = "您不是合法用户";
if (ins.equals("jiqimiao")) {
outs = "欢迎您:" + ins;
}
outputToClient.writeUTF(outs);//发送到客户端信息
jta.append(outs + " ");
}
} catch (Exception e) {
}
}
}
}
客户端代码如下:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* 客户端程序
* @author 左杰
*
*/
public class TestClient extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = -1751294222460334070L;
private JTextArea jta = new JTextArea();
private JTextField jtf = new JTextField();
private DataOutputStream toServer;
private DataInputStream fromServer;
public static void main(String[] args){
new TestClient();
}
public TestClient(){
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("请输入用户名:"),BorderLayout.WEST);
p.add(jtf,BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p,BorderLayout.NORTH);
this.getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);
jtf.addActionListener(this);//添加事件侦听
setTitle("Client");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
Socket socket = new Socket("localhost",5000);//链接指定服务器和端口
this.fromServer = new DataInputStream(socket.getInputStream());
this.toServer = new DataOutputStream(socket.getOutputStream());
}catch (IOException e) {
// TODO Auto-generated catch block
jta.append(e.toString()+" ");
}
}
public void actionPerformed(ActionEvent e) {//定义侦听器
if (e.getSource() instanceof JTextField) {
try {
String tos = jtf.getText().trim();
toServer.writeUTF(tos);
toServer.flush();
String gets = DataInputStream.readUTF(fromServer);;
jta.append(gets+" ");
} catch (IOException e1) {
// TODO Auto-generated catch block
System.err.println(e1);
}
}
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* 客户端程序
* @author 左杰
*
*/
public class TestClient extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = -1751294222460334070L;
private JTextArea jta = new JTextArea();
private JTextField jtf = new JTextField();
private DataOutputStream toServer;
private DataInputStream fromServer;
public static void main(String[] args){
new TestClient();
}
public TestClient(){
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("请输入用户名:"),BorderLayout.WEST);
p.add(jtf,BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p,BorderLayout.NORTH);
this.getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);
jtf.addActionListener(this);//添加事件侦听
setTitle("Client");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
Socket socket = new Socket("localhost",5000);//链接指定服务器和端口
this.fromServer = new DataInputStream(socket.getInputStream());
this.toServer = new DataOutputStream(socket.getOutputStream());
}catch (IOException e) {
// TODO Auto-generated catch block
jta.append(e.toString()+" ");
}
}
public void actionPerformed(ActionEvent e) {//定义侦听器
if (e.getSource() instanceof JTextField) {
try {
String tos = jtf.getText().trim();
toServer.writeUTF(tos);
toServer.flush();
String gets = DataInputStream.readUTF(fromServer);;
jta.append(gets+" ");
} catch (IOException e1) {
// TODO Auto-generated catch block
System.err.println(e1);
}
}
}
}
大家共同学习,共同进步。
- 简单的服务器和客户端程序代码实例
- Luasocket 服务器,客户端简单实例
- 简单的客户端和服务器流程
- python简单的socket 服务器和客户端
- 简单的客户端和服务器通信程序
- 简单的python socket服务器和客户端
- 简单的TCP服务器和客户端
- Netty客户端和服务器简单的例子
- [Unity]简单的socket客户端和服务器
- 多线程编程实例----服务器客户端简单通信
- Apache MINA客户端服务器简单实例
- php简单socket服务器客户端代码实例
- IOCP 简单服务器和客户端
- libevent 简单客户端和服务器
- unity简单服务器和客户端
- boost::asio 的daytime客户端和服务器实例
- 简单的无连接的udp服务器和客户端
- QT中简单的实现客户端和服务器的沟通
- fjnu 1761 star55的难题
- 软件外包过程中,合作双方的博弈(一)-谁更有优势
- Liferay Portal学习笔记(四):搭建开发环境
- Liferay Portal学习笔记之(五):开发主题风格theme
- fjnu 1095 Digital Roots
- 简单的服务器和客户端程序代码实例
- Nginx 启动、停止服务的脚本
- Nginx HTTP Server + PHP5 (With fast-cgi And xcache) On Ubuntu Feisty Fawn
- fjnu 1104 Gold Coins
- linux密码破解一方法
- DVD刻录初学者必读
- fjnu 1101 Hangover
- fjnu 1911 Read Or Try :)
- fjnu 1743 百位数精确求和