----------------------服务端SocketS.java----------------------------------
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
class SocketS { private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="147,33"
private JPanel jContentPane = null;
private JPanel jPanel = null;
private Panel panel = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
static JLabel jLabel = null;
Object s1=new Object();
private JPanel jPanel1 = null;
static JTextArea jTextArea = null;
private JButton jButton3 = null;
ServerThread send;
public static BufferedReader sin;
public static PrintWriter sout;
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setSize(new java.awt.Dimension(330,314));
jFrame.setTitle("服务端");
jFrame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
jFrame.setBackground(new java.awt.Color(238,238,238));
jFrame.setResizable(false);
jFrame.setContentPane(getJContentPane());
jFrame.setVisible(true);
jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent e) {
}
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
}
return jFrame;
} private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.setPreferredSize(new java.awt.Dimension(20,20));
jContentPane.setBackground(new java.awt.Color(119,2,2));
jContentPane.add(getPanel(), java.awt.BorderLayout.NORTH);
jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER);
jContentPane.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
}
return jContentPane;
} private JPanel getJPanel() {
if (jPanel == null) {
jLabel = new JLabel();
jLabel.setText("");
jLabel.setPreferredSize(new java.awt.Dimension(320,180));
jLabel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jLabel.setForeground(java.awt.Color.cyan);
jLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel.setAlignmentY(0.0F);
jLabel.setRequestFocusEnabled(false);
jLabel.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel.setBackground(new java.awt.Color(153,51,0));
jPanel = new JPanel();
jPanel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0));
jPanel.setBackground(new java.awt.Color(153,51,0));
jPanel.setPreferredSize(new java.awt.Dimension(320,180));
jPanel.add(jLabel, null);
jLabel.setAutoscrolls(true);
jLabel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
jLabel.setBackground(new Color(255,255,255));
}
return jPanel;
} private Panel getPanel() {
if (panel == null) {
panel = new Panel();
panel.setPreferredSize(new java.awt.Dimension(10,36));
panel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
panel.setBackground(new java.awt.Color(153,51,0));
panel.add(getJButton(), null);
panel.add(getJButton1(), null);
panel.add(getJButton2(), null);
}
return panel;
} private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("启动");
jButton.setToolTipText("启动服务");
jButton.setSelected(false);
jButton.setAlignmentY(0.2F);
jButton.setMargin(new java.awt.Insets(2,10,2,10));
jButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
send=new ServerThread();
send.start();
try
{
sin=new BufferedReader(new InputStreamReader(ServerThread.socket.getInputStream()));
sout=new PrintWriter(ServerThread.socket.getOutputStream());
}catch(Exception e1){}
}
}
);
}
return jButton;
} private JButton getJButton1() {
if (jButton1 == null)
{
jButton1 = new JButton();
jButton1.setText("停止");
jButton1.setMargin(new java.awt.Insets(2,10,2,10));
jButton1.setVisible(true);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
send.stop();
}
});
}
return jButton1;
} private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setText("关闭");
jButton2.setPreferredSize(new java.awt.Dimension(60,28));
jButton2.setMargin(new java.awt.Insets(2,2,2,2));
jButton2.setAlignmentY(0.2F);
jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
//jButton2.addActionListener()
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
}
return jButton2;
}
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setPreferredSize(new java.awt.Dimension(250,60));
jPanel1.setBackground(new java.awt.Color(153,51,0));
jPanel1.add(getJTextArea(), null);
jPanel1.add(getJButton3(), null);
}
return jPanel1;
}
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setPreferredSize(new java.awt.Dimension(258,50));
jTextArea.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
}
return jTextArea;
}
private JButton getJButton3() {
if (jButton3 == null) {
jButton3 = new JButton();
jButton3.setPreferredSize(new java.awt.Dimension(50,50));
jButton3.setMargin(new java.awt.Insets(2,2,2,2));
jButton3.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));
jButton3.setText("发送");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e)
{
Email ss=new Email();
ss.start();
}
});
}
return jButton3;
}public static void main(String args[])
{
SocketS s1=new SocketS();
s1.getJFrame();
}
}
class ServerThread extends Thread
{ static ServerSocket server=null;
static Socket socket=null;
int count;
public void run()
{
if(server==null&&socket==null)
{
try
{
server=new ServerSocket(2006);
try
{
socket=server.accept();
}catch(Exception e1){System.out.print("asdsad");}
}catch(Exception e1){System.out.println("Error."+e1);}
}
}
}
class Email extends Thread
{
BufferedReader mein;
public void run()
{
String line;
try
{
String sss=new String(SocketS.jTextArea.getText());
InputStream stm=new ByteArrayInputStream(sss.getBytes());
mein=new BufferedReader(new InputStreamReader(stm));
line=mein.readLine();
while(!line.equals("exit"))
{
SocketS.jLabel.setText("\n\r"+SocketS.jLabel.getText()+"\r\n"+"服务端:"+line+"\n\r");
SocketS.jTextArea.setText("");
SocketS.jLabel.setText(SocketS.jLabel.getText()+"客户端:"+SocketS.sin.readLine()+"\n");
SocketS.sout.print(line);
SocketS.sout.flush();
line=mein.readLine();
}
}catch(Exception e1){System.out.print(e1);}
}
}客户端程序看下一楼
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
class SocketS { private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="147,33"
private JPanel jContentPane = null;
private JPanel jPanel = null;
private Panel panel = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
static JLabel jLabel = null;
Object s1=new Object();
private JPanel jPanel1 = null;
static JTextArea jTextArea = null;
private JButton jButton3 = null;
ServerThread send;
public static BufferedReader sin;
public static PrintWriter sout;
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setSize(new java.awt.Dimension(330,314));
jFrame.setTitle("服务端");
jFrame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
jFrame.setBackground(new java.awt.Color(238,238,238));
jFrame.setResizable(false);
jFrame.setContentPane(getJContentPane());
jFrame.setVisible(true);
jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent e) {
}
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
}
return jFrame;
} private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.setPreferredSize(new java.awt.Dimension(20,20));
jContentPane.setBackground(new java.awt.Color(119,2,2));
jContentPane.add(getPanel(), java.awt.BorderLayout.NORTH);
jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER);
jContentPane.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
}
return jContentPane;
} private JPanel getJPanel() {
if (jPanel == null) {
jLabel = new JLabel();
jLabel.setText("");
jLabel.setPreferredSize(new java.awt.Dimension(320,180));
jLabel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jLabel.setForeground(java.awt.Color.cyan);
jLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel.setAlignmentY(0.0F);
jLabel.setRequestFocusEnabled(false);
jLabel.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel.setBackground(new java.awt.Color(153,51,0));
jPanel = new JPanel();
jPanel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0));
jPanel.setBackground(new java.awt.Color(153,51,0));
jPanel.setPreferredSize(new java.awt.Dimension(320,180));
jPanel.add(jLabel, null);
jLabel.setAutoscrolls(true);
jLabel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
jLabel.setBackground(new Color(255,255,255));
}
return jPanel;
} private Panel getPanel() {
if (panel == null) {
panel = new Panel();
panel.setPreferredSize(new java.awt.Dimension(10,36));
panel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
panel.setBackground(new java.awt.Color(153,51,0));
panel.add(getJButton(), null);
panel.add(getJButton1(), null);
panel.add(getJButton2(), null);
}
return panel;
} private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("启动");
jButton.setToolTipText("启动服务");
jButton.setSelected(false);
jButton.setAlignmentY(0.2F);
jButton.setMargin(new java.awt.Insets(2,10,2,10));
jButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
send=new ServerThread();
send.start();
try
{
sin=new BufferedReader(new InputStreamReader(ServerThread.socket.getInputStream()));
sout=new PrintWriter(ServerThread.socket.getOutputStream());
}catch(Exception e1){}
}
}
);
}
return jButton;
} private JButton getJButton1() {
if (jButton1 == null)
{
jButton1 = new JButton();
jButton1.setText("停止");
jButton1.setMargin(new java.awt.Insets(2,10,2,10));
jButton1.setVisible(true);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
send.stop();
}
});
}
return jButton1;
} private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setText("关闭");
jButton2.setPreferredSize(new java.awt.Dimension(60,28));
jButton2.setMargin(new java.awt.Insets(2,2,2,2));
jButton2.setAlignmentY(0.2F);
jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
//jButton2.addActionListener()
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
}
return jButton2;
}
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setPreferredSize(new java.awt.Dimension(250,60));
jPanel1.setBackground(new java.awt.Color(153,51,0));
jPanel1.add(getJTextArea(), null);
jPanel1.add(getJButton3(), null);
}
return jPanel1;
}
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setPreferredSize(new java.awt.Dimension(258,50));
jTextArea.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
}
return jTextArea;
}
private JButton getJButton3() {
if (jButton3 == null) {
jButton3 = new JButton();
jButton3.setPreferredSize(new java.awt.Dimension(50,50));
jButton3.setMargin(new java.awt.Insets(2,2,2,2));
jButton3.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));
jButton3.setText("发送");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e)
{
Email ss=new Email();
ss.start();
}
});
}
return jButton3;
}public static void main(String args[])
{
SocketS s1=new SocketS();
s1.getJFrame();
}
}
class ServerThread extends Thread
{ static ServerSocket server=null;
static Socket socket=null;
int count;
public void run()
{
if(server==null&&socket==null)
{
try
{
server=new ServerSocket(2006);
try
{
socket=server.accept();
}catch(Exception e1){System.out.print("asdsad");}
}catch(Exception e1){System.out.println("Error."+e1);}
}
}
}
class Email extends Thread
{
BufferedReader mein;
public void run()
{
String line;
try
{
String sss=new String(SocketS.jTextArea.getText());
InputStream stm=new ByteArrayInputStream(sss.getBytes());
mein=new BufferedReader(new InputStreamReader(stm));
line=mein.readLine();
while(!line.equals("exit"))
{
SocketS.jLabel.setText("\n\r"+SocketS.jLabel.getText()+"\r\n"+"服务端:"+line+"\n\r");
SocketS.jTextArea.setText("");
SocketS.jLabel.setText(SocketS.jLabel.getText()+"客户端:"+SocketS.sin.readLine()+"\n");
SocketS.sout.print(line);
SocketS.sout.flush();
line=mein.readLine();
}
}catch(Exception e1){System.out.print(e1);}
}
}客户端程序看下一楼
解决方案 »
- 如何在Linux服务器上、命令行运行Java程序
- 类名<类名>
- 一个类如果override一个hashcode方法,有什么原则
- 问个菜鸟的问题呵呵
- 怎么把数据库里信息动态放到JTable中???
- 恳求大家帮我想想:除了用JApplet以外,还有什么方式可以在网页上加载一个GUI页面?
- [求助]applet在Jcreator里编译成功后,运行时却出错为什么?
- 老板要炒我,该怎么办?
- 如何在客户端了解服务器程序里的id号
- 一个数据结构有关的难题,爱好者高手请进!
- 请问有人能以一个简单的例子,说明一下组合的作用吗?
- 请问:ojdbc14.jar的驱动可不可以用于JDK1.5下的Oracle访问?有没有更好的驱动
---------------------------客户端SocketL.java----------------------------
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
public class SocketL { private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="110,24"
private Panel panel = null;
private Label label = null;
private TextField textField = null;
private Label label1 = null;
private TextField textField1 = null;
private JButton jButton = null;
Object l1=new Object();
static JLabel jLabel = null;
static JTextArea jTextArea = null;
private JButton jButton1 = null;
static BufferedReader sin;
static PrintWriter sout;
String hostip=null;
int port=0;
String message=null;
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame("登陆");
jFrame.setSize(new java.awt.Dimension(371,332));
jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jFrame.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jFrame.setResizable(false);
jFrame.setTitle("客户端");
jFrame.setContentPane(getPanel());
jFrame.setVisible(true);
jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent e) {
}
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
}
return jFrame;
}
private Panel getPanel() {
if (panel == null) {
jLabel = new JLabel();
jLabel.setText("");
jLabel.setAlignmentY(0.0F);
jLabel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
jLabel.setAutoscrolls(true);
jLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jLabel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
jLabel.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel.setPreferredSize(new java.awt.Dimension(360,200));
label1 = new Label();
label1.setText("端口:");
label1.setAlignment(java.awt.Label.CENTER);
label = new Label();
label.setText("服务器:");
label.setAlignment(java.awt.Label.CENTER);
label.setMinimumSize(new java.awt.Dimension(50,23));
panel = new Panel();
panel.setMinimumSize(new java.awt.Dimension(10,10));
panel.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
panel.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
panel.add(label, null);
panel.add(getTextField(), null);
panel.add(label1, null);
panel.add(getTextField1(), null);
panel.add(getJButton(), null);
panel.setBackground(java.awt.Color.orange);
panel.add(jLabel, null);
panel.add(getJTextArea(), null);
panel.add(getJButton1(), null);
}
return panel;
}
private TextField getTextField() {
if (textField == null) {
textField = new TextField();
textField.setMinimumSize(new java.awt.Dimension(120,23));
textField.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 14));
textField.setText("127.0.0.1");
textField.setPreferredSize(new java.awt.Dimension(120,23));
}
return textField;
}
private TextField getTextField1() {
if (textField1 == null) {
textField1 = new TextField();
textField1.setPreferredSize(new java.awt.Dimension(50,23));
textField1.setText("2006");
textField1.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 14));
}
return textField1;
}
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setMargin(new java.awt.Insets(2,4,2,4));
jButton.setText("连接");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e)
{
hostip=textField.getText();
port=Integer.parseInt(textField1.getText());
try
{
jLabel.setText("客户端:申请连接..."+"\n");
Socket socket=new Socket(hostip,port);
sin=new BufferedReader(new InputStreamReader(socket.getInputStream()));
sout=new PrintWriter(socket.getOutputStream());
}catch(Exception e1){System.out.print("Error."+e1);}
jLabel.setText(jLabel.getText()+"\n"+"客户端:连接成功"+"\n");
}
});
}
return jButton;
}
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setPreferredSize(new java.awt.Dimension(300,50));
jTextArea.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
}
return jTextArea;
}
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setText("发送");
jButton1.setPreferredSize(new java.awt.Dimension(50,50));
jButton1.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));
jButton1.setMargin(new java.awt.Insets(2,2,2,2));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e)
{
Sed ll=new Sed();
ll.start();
}
});
}
return jButton1;
}
public static void main(String args[])
{
SocketL l1=new SocketL();
l1.getJFrame();
}}
class Sed extends Thread
{
public static StringBuffer sss;
BufferedReader mein;
public void run()
{
String line;
try
{
String sss=new String(SocketL.jTextArea.getText());
InputStream srm=new ByteArrayInputStream(sss.getBytes());
mein=new BufferedReader(new InputStreamReader(srm));
line=mein.readLine();
while(!line.equals("exit"))
{
SocketL.jLabel.setText(SocketL.jLabel.getText()+"客户端:"+line+"\n");
SocketL.jTextArea.setText("");
SocketL.jLabel.setText(SocketL.jLabel.getText()+"\n"+"服务端:"+SocketL.sin.readLine()+"\n");
SocketL.sout.print(line);
SocketL.sout.flush();
line=mein.readLine();
}
}catch(Exception e1){System.out.print(e1);}
}
}
从一端发送过来的数据,另一端总是收不到,急求大家帮忙啊~~
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
send=new ServerThread();
send.start();
try
{
sin=new BufferedReader(new InputStreamReader(ServerThread.socket.getInputStream()));
sout=new PrintWriter(ServerThread.socket.getOutputStream());
}catch(Exception e1){}
}
}
);
}
return jButton;
}
注意这里的catch(Exception e1), 估计没错的话,ServerThread.socket.getInputStream()会失败,send.start();后,马上就会执行ServerThread.socket.getInputStream()这一句,这个时候ServerThread.socket还没得到一个Client的socket
{
server=new ServerSocket(2006);
try
{
socket=server.accept();
}catch(Exception e1){System.out.print("asdsad");}
}catch(Exception e1){System.out.println("Error."+e1);}}
这里应该不对吧,你的服务器端一直在监听,并没有对连接的客户端作什么吧