客户端与服务端之间的关系代码
来源:互联网 发布:ftp登录命令 指定端口 编辑:程序博客网 时间:2024/06/08 12:17
客户端的代码:
package com;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;import java.util.Scanner;public class ChatClient {private OutputStream out;private InputStream is;private Socket socket;Frame f = new Frame("我的聊天室");TextField tfip = new TextField(15); // 用户输入昵称的文本框TextField tfdata = new TextField(20);//用户输入信息的文本框List lst = new List(6); // 用于显示接收消息的列表框public static void main(String[] args) {ChatClient c = new ChatClient();c.init();}public void init() {f.setSize(300, 300);f.add(lst);Panel p = new Panel();p.setLayout(new BorderLayout());p.add("West", tfip);p.add("East", tfdata);f.add("South", p);f.setVisible(true);f.setResizable(false);// 限制用户设置窗体的大小f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {f.setVisible(false);f.dispose();System.exit(0);}});tfdata.addActionListener(new ActionListener() {// 填写完内容后,按下回车键所触发的事件public void actionPerformed(ActionEvent e) {// 有关网络发送信息的动作try {out = socket.getOutputStream(); // 获取Socket输出流String ip = socket.getLocalAddress().getHostAddress(); // 获取客户IPString name = tfip.getText() + "(" + ip + "):"; // 获取昵称String text = name + tfdata.getText() + "\n"; // 为信息添加结束符out.write(text.getBytes()); // 发送信息到服务器端out.flush();tfdata.setText(""); // 清空文本框内容} catch (IOException e1) {e1.printStackTrace();}}});try {socket = new Socket("192.168.65.1", 8888);} catch (Exception e1) {e1.printStackTrace();}// 创建连接服务器的SocketreceiveMessage();// 启动接收信息的线程}public void receiveMessage() {// 接收信息的方法new Thread() {// 创建线程public void run() {try {is = socket.getInputStream();Scanner scan = new Scanner(is);// 创建输入流扫描器while (socket.isConnected()) {String text = scan.nextLine() + "\n";// 读取一行信息lst.add(text);// 把读取信息显示到文本域控件sleep(100);// 线程休眠}} catch (Exception e) {e.printStackTrace();}}}.start();// 线程启动}}
服务端的代码:
package com;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.Scanner;public class ChatServer { static ArrayList<Socket> clients = new ArrayList<Socket>();// Socket集合 泛型 public static void main(String[] args) { try { ServerSocket server = new ServerSocket(8888); System.out.println("服务器已经启动..........."); while (true) { Socket socket = server.accept();// 接收客户端连接 clients.add(socket);// 把客户端保存到集合中 transmitMessage(socket); } } catch (IOException e) { e.printStackTrace(); } } private static void transmitMessage(final Socket socket) throws IOException { new Thread() { private Scanner scan; public void run() { try { InputStream is = socket.getInputStream(); // 获取客户端Socket输入流 scan = new Scanner(is);// 创建输入流扫描器 // 发送连接成功信息 socket.getOutputStream().write("连接成功....\n".getBytes()); } catch (IOException e1) { e1.printStackTrace(); } while (true) { String text = scan.nextLine() + "\n";// 接收客户发送的信息 for (Socket client : clients) { try { OutputStream out = client.getOutputStream();// 获取每个客户端的输出流 out.write(text.getBytes());// 向每个客户端转发信息 out.flush(); } catch (IOException e) { } } } } }.start(); }}
- 客户端与服务端之间的关系代码
- 简单的服务端与客户端通信代码
- WCF客户端与服务端之间建立通信的几个要点
- java TCP客户端与服务端之间的通讯
- 新手学习-Tcp的服务端与客户端之间进行通讯
- FMS服务端与客户端之间的通信方式
- Unity 中服务端与客户端的的代码Demo
- Unity 中服务端与客户端的的代码Demo
- OpenSS与服务端进行双向认证的客户端代码
- 用C++编写的SOCKET服务端与客户端代码实例
- 基于服务端和客户端之间的通信
- 客户端与服务端的互动
- WCF服务端与客户端代码示例
- Android客户端与服务端(jsp)之间json的传输与解析【附效果图附源码】
- tcp客户端与服务端之间的通信实例(参考了孙鑫老师的书籍)
- udp客户端与服务端之间的通信实例(参考了孙鑫老师的书籍)
- 及时释放服务端与客户端之间的TCP连接的方法
- Android客户端与PC服务端之间的SOCKET实现登陆功能(服务器)
- Ext.Net 1.x_Ext.Net.常用控件属性集合
- 客户端svn 文件夹图标无法正常显示,处理方法。
- 找出n个字符串中出现次数最多的子串
- Apache配置详解
- 委托,深入浅出才是王道
- 客户端与服务端之间的关系代码
- 最长回文数
- java经典位运算实例
- Lucene学习总结之三:Lucene的索引文件格式(1)
- 黑马程序员—SQL入门
- 识别算法中的漏洞问题
- Android 打开Activity后,不显示键盘
- matlab的reshape函数的作用
- contentprovider的学习实例总结