package socketserver;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class SocketServer
extends JFrame
implements Runnable {
JPanel contentPane;
JScrollPane jScrollPane1 = new JScrollPane();
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JTextArea jTextArea1 = new JTextArea();
Socket socket;
ServerSocket serverSocket;
BufferedReader bufferedReader; //客户端消息缓冲区
PrintWriter printWriter; //服务器端消息缓冲区
//Construct the frame
public SocketServer() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel)this.getContentPane();
jScrollPane1.setBounds(new Rectangle(22, 20, 276, 134));
contentPane.setLayout(null);
this.setSize(new Dimension(321, 268));
this.setTitle("服务器端");
jLabel1.setText("发送消息");
jLabel1.setBounds(new Rectangle(22, 165, 64, 24));
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(95, 165, 203, 24));
jTextField1.addKeyListener(new SocketServer_jTextField1_keyAdapter(this));
jButton1.setBounds(new Rectangle(48, 206, 70, 25));
jButton1.setEnabled(false);
jButton1.setText("发送");
jButton1.addActionListener(new SocketServer_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(199, 206, 70, 25));
jButton2.setText("退出");
jButton2.addActionListener(new SocketServer_jButton2_actionAdapter(this));
jTextArea1.setText("");
contentPane.addKeyListener(new SocketServer_contentPane_keyAdapter(this));
contentPane.add(jScrollPane1, null);
jScrollPane1.getViewport().add(jTextArea1, null);
contentPane.add(jLabel1, null);
contentPane.add(jTextField1, null);
contentPane.add(jButton1, null);
contentPane.add(jButton2, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public void run() {
/**@todo Implement this java.lang.Runnable method*/
try {
serverSocket = new ServerSocket(1000); //建立端口号为1000的服务器的端口
socket = serverSocket.accept(); //接收客户端
bufferedReader = new BufferedReader(new InputStreamReader(socket.
getInputStream())); //建立缓冲区
printWriter = new PrintWriter(socket.getOutputStream());
if (socket != null) {
jTextArea1.append("客户端已连接!\n");
jButton1.setEnabled(true);
}
GetInfo getInfo = new GetInfo();
Thread t = new Thread(getInfo); //创建接收客户端消息的线程
t.start();
}
catch (Exception e) {
jTextArea1.append(e.toString() + "\n");
}
}
void jButton1_actionPerformed(ActionEvent e) {
printWriter.println(jTextField1.getText()); //读入jTextField1中的文本
printWriter.flush();
jTextArea1.append("服务器端信息:" + jTextField1.getText()); //将jTextField1中的文本信息显示在jTextArea1中
jTextField1.setText("");
}
void jButton2_actionPerformed(ActionEvent e) { //退出
try {
jTextArea1.append("服务器退出!\n");
printWriter.println("exit!");
printWriter.flush();
}
catch (Exception err) {
jTextArea1.append(err.toString() + "\n");
}
finally {
System.exit(0);
}
}
private class GetInfo
implements Runnable { //定义一个内部类,接收消息
public void run() {
String str;
try {
str = bufferedReader.readLine(); //从bufferedReader读入一行
while (str != "exit!") {
jTextArea1.append("客户端信息:" + str + "\n");
str = bufferedReader.readLine(); //继续读入客户端信息
}
bufferedReader.close(); //关闭缓冲区
printWriter.close();
socket.close(); //关闭socket
serverSocket.close(); //关闭serverSocket
}
catch (Exception e) {
jTextArea1.append(e.toString() + "\n");
}
}
}
void contentPane_keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
printWriter.println(jTextField1.getText()); //读入jTextField1中的文本
printWriter.flush();
jTextArea1.append("服务器端信息:" + jTextField1.getText()); //将jTextField1中的文本信息显示在jTextArea1中
jTextField1.setText("");
}
}
void jTextField1_keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
try {
jTextArea1.append("服务器退出!\n");
printWriter.println("exit!");
printWriter.flush();
}
catch (Exception err) {
jTextArea1.append(err.toString() + "\n");
}
finally {
System.exit(0);
}
}
}
}
class SocketServer_jButton1_actionAdapter
implements java.awt.event.ActionListener {
SocketServer adaptee;
SocketServer_jButton1_actionAdapter(SocketServer adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class SocketServer_jButton2_actionAdapter
implements java.awt.event.ActionListener {
SocketServer adaptee;
SocketServer_jButton2_actionAdapter(SocketServer adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class SocketServer_contentPane_keyAdapter
extends java.awt.event.KeyAdapter {
SocketServer adaptee;
SocketServer_contentPane_keyAdapter(SocketServer adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.contentPane_keyPressed(e);
}
}
class SocketServer_jTextField1_keyAdapter
extends java.awt.event.KeyAdapter {
SocketServer adaptee;
SocketServer_jTextField1_keyAdapter(SocketServer adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.jTextField1_keyPressed(e);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
.rar (91个子文件)
聊天室
TCP Socket通信的客户端
SocketClient.jpx 3KB
SocketClient.jpx.local 2KB
bak
socketclient
SocketClient.java~2~ 6KB
SocketClient.java~1~ 6KB
src
socketclient
Application1.java 1KB
SocketClient.java 6KB
classes
package cache
socketclient.dep2 6KB
socketclient
SocketClient$1.class 185B
SocketClient_jTextField1_keyAdapter.class 677B
SocketClient_jButton3_actionAdapter.class 718B
SocketClient$GetInfo.class 2KB
Application1.class 1KB
SocketClient_jButton1_actionAdapter.class 718B
SocketClient_jButton2_actionAdapter.class 718B
SocketClient.class 5KB
获得UDP端口号
GetdpPort.jpx.local 2KB
GetdpPort.jpx 2KB
src
getdpport
GetUdpPort.java 2KB
Application1.java 1KB
classes
package cache
getdpport.dep2 4KB
getdpport
GetUdpPort.class 3KB
Application1.class 1KB
GetUdpPort_jButton1_actionAdapter.class 691B
socketserver
SocketServer
SocketServer.jpx 2KB
bak
socketserver
SocketServer.java~2~ 468B
SocketServer.java~1~ 432B
Application1.java~1~ 1KB
Application1.java~2~ 1KB
Application1.java~3~ 1KB
Application1.java~4~ 1KB
src
socketserver
Application1.java 1KB
Frame1.java 1008B
SocketServer.java 6KB
SocketServer.jpx.local 1KB
classes
socketserver
SocketServer$GetInfo.class 2KB
SocketServer_jButton2_actionAdapter.class 718B
SocketServer$1.class 185B
SocketServer_jButton1_actionAdapter.class 718B
SocketServer.class 6KB
SocketServer_contentPane_keyAdapter.class 677B
Application1.class 1KB
SocketServer_jTextField1_keyAdapter.class 677B
Frame1.class 1KB
package cache
socketserver.dep2 8KB
SocketServer.jpx~ 0B
UDP通信的客户端
UdpClient.jpx.local~ 2KB
UdpClient.jpx.local 2KB
UdpClient.jpx 2KB
src
udpclient
Application1.java 1KB
UdpClient.java 5KB
classes
udpclient
UdpClient_jTextField1_keyAdapter.class 644B
UdpClient_jButton1_actionAdapter.class 685B
UdpClient.class 5KB
UdpClient_jButton2_actionAdapter.class 685B
Application1.class 1KB
package cache
udpclient.dep2 6KB
UDP聊天程序
src
udpchat
Application1.java 1KB
UdpChat.java 6KB
UdpChat.jpx 2KB
classes
udpchat
UdpChat_jButton1_actionAdapter.class 663B
UdpChat_jButton2_actionAdapter.class 663B
UdpChat.class 6KB
Application1.class 1KB
UdpChat_jTextField1_keyAdapter.class 622B
UDP通信的服务器端
UdpServer.jpx 2KB
UdpServer.jpx.local~ 2KB
src
udpserver
UdpServer.java 5KB
Application1.java 1KB
UdpServer.jbx 353B
classes
package cache
udpserver.dep2 6KB
udpserver
UdpServer.class 5KB
UdpServer_jTextField1_keyAdapter.class 644B
UdpServer_jButton2_actionAdapter.class 685B
Application1.class 1KB
UdpServer_jButton1_actionAdapter.class 685B
UdpServer.jpx.local 2KB
TCP Socket通信的服务器端
SocketServer.jpx 3KB
src
socketserver
Application1.jbx 88B
Application1.java 1KB
SocketServer.java 6KB
SocketServer.jpx.local 2KB
classes
socketserver
SocketServer$GetInfo.class 2KB
SocketServer_jButton2_actionAdapter.class 718B
SocketServer$1.class 185B
SocketServer_jButton1_actionAdapter.class 718B
SocketServer.class 6KB
SocketServer_contentPane_keyAdapter.class 677B
Application1.class 1KB
SocketServer_jTextField1_keyAdapter.class 677B
package cache
socketserver.dep2 7KB
SocketServer.jpx.local~ 2KB
共 91 条
- 1
资源评论
villoercs
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功