最简单网络编程之客户端往服务器端送东西03
2017-08-16 17:20
134 查看
package com.lin.morethread; import java.awt.Color; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /* 方法步骤: 自定义一个类实现Thread类或者实现Runnable接口,并覆盖run方法 并定义一个Socket类型的属性 构造方法接受一个Socket类型的参数,进行初始化 然后client=server.accept();//获取一个客户端对象 Thread thread=new Thread(client);//把获得的客户端Socket传进去 thread.start(); 在run方法写上你想对那个Socket做的事,这样与每个客户端(Socket)的通信都是一个单独的线程了。 弊端:如果有一万个客户需要创建一万个线程,我在想是不是可以用线程池,如何实现两个客户端更好的通信 */ public class ChartSocketServer extends Frame implements ActionListener { private static final long serialVersionUID = 1L; //当服务器输入信息后,需要开启ChartClient这个客户端类,然后再回窗口看信息 Label label = new Label("输入聊天信息,按回车发送!"); TextField textField = new TextField(20); TextArea textArea = new TextArea(); Panel panel = new Panel(); private ServerSocket server;//定义服务器端对象 private Socket client;//定义客户端对象 private InputStream inputStream; private OutputStream outputStream; public ChartSocketServer() {//初始化构造函数 super("服务器"); setSize(380, 300); panel.add(label); panel.add(textField); textField.addActionListener(this); add("North", panel); add("Center", textArea); textArea.setBackground(Color.black); textArea.setForeground(Color.yellow); addWindowListener(new WindowAdapter() {//匿名子类 public void windowClosing(WindowEvent e) { System.exit(0);//当点击关闭按钮时退出程序 } }); this.setVisible(true);//使得窗体可见 try { server = new ServerSocket(5000); while (true) { System.out.println("等待客户端连接!"); client = server.accept(); Thread thread = new Thread(new SSocket(client)); thread.start(); } } catch (IOException e) { e.printStackTrace(); } } //客户端和服务器端的表现行为 @Override public void actionPerformed(ActionEvent e) { try { String str = new String(textField.getText()); byte buf[] = str.getBytes(); textField.setText(" "); textArea.append("服务器说:" + str + "\n"); } catch (Exception ioException) { ioException.printStackTrace(); } } //内部类 class SSocket implements Runnable { private Socket client; public SSocket(Socket client) { this.client = client; } @Override public void run() { //while (true) { try { textArea.append("已经和客户机连接:" + client.getInetAddress() + client.getInetAddress().getHostName() + "\n"); inputStream = client.getInputStream(); outputStream = client.getOutputStream(); byte buff[] = new byte[512]; //从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中。 inputStream.read(buff); String str = new String(buff); textArea.append("客户机说:" + str + ""); } catch (IOException e) { e.printStackTrace(); } //} } } public static void main(String args[]) { new ChartSocketServer(); } }
客户端
package com.lin.morethread;
import java.io.OutputStream;
import java.net.Socket;
public class ChartClient {
public static void main(String[] args) {
moreClient("127.0.0.1", 5000,"我是客户机1");
moreClient("192.168.12.196", 5000,"我是客户机2");
}
private static void moreClient(String host, int port,String contents) {
Socket s = null;
OutputStream os = null;
try {
// 建立连接
s = new Socket(host, port);
os = s.getOutputStream();
// 向服务器发送东西
os.write(contents.getBytes());
os.write("\n".getBytes());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (s != null)
s.close();
if (s != null)
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
相关文章推荐
- 最简单网络编程之客户端往服务器端送东西
- 网络编程 简单的服务器端和客户端
- java网络编程,简单的客户端和服务器端
- Linux下简单的网络编程笔记(模拟简单的服务器与客户端的通信 1-服务器端)
- Android网络通信----1.Socket编程之简单客户端与服务器端通信
- 最简单网络编程之客户端往服务器端送东西02
- python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
- Linux网络编程 3 - 简单的Tcp服务器和客户端编程
- Java网络编程之简单的服务端客户端应用实例
- Python 网络编程---简单的服务器与客户端实现---阻塞式编写
- java网络编程之socket网络编程示例(服务器端/客户端)
- IOS网络Socke(客户端,服务器端)t的简单介绍
- socket编程简单服务器端和简单客户端
- 深入理解计算机系统网络编程一节echo客户端服务器端代码的编译运行
- linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
- linux网络编程之socket(九):使用select函数改进客户端/服务器端程序
- 网络编程--python实现 简单的服务端和客户端
- socket编程,实现简单的客户端服务器端发送数据
- Android 的网络编程(15)-Http JSon服务器端和客户端通信
- 简单的网络编程列子,服务器端