做了一个客户端图形界面,服务端可收到客户端信息,但客户端收不到服务端返回的信息 http://dl.vmall.com/c0z71mj7fd 这是我的代码麻烦看下 java socket 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 界面package chat;//我的聊天工具import java.awt.event.*;import java.io.*;import java.net.*;import javax.swing.*;import javax.swing.event.*;public class ChatAWT extends javax.swing.JFrame { private JLabel jLabel1; private JLabel jLabel2; private JLabel jLabel3; private JButton jButton1; private JButton jButton2; private JButton jButton3; public JTextArea jTextArea2; public JTextArea jTextArea1; private JScrollPane jScrollPane1; private JScrollPane jScrollPane2; private Socket sk; //Socket对象 private String Text=""; //接收聊天记录 public ChatAWT(Socket sk) throws Exception { super(); initGUI(); this.sk=sk; } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); getContentPane().setBackground(new java.awt.Color(83,169,255)); { jLabel1 = new JLabel(); getContentPane().add(jLabel1); jLabel1.setText("我的聊天室"); jLabel1.setBounds(118, 12, 106, 26); jLabel1.setFont(new java.awt.Font("新宋体",1,20)); } { jScrollPane1 = new JScrollPane(); getContentPane().add(jScrollPane1, "Center"); jScrollPane1.setBounds(45, 44, 262, 149); { jTextArea1 = new JTextArea(); jScrollPane1.setViewportView(jTextArea1); jTextArea1.setBackground(new java.awt.Color(191,251,214)); jTextArea1.setEditable(false); } } { jScrollPane2 = new JScrollPane(); getContentPane().add(jScrollPane2, "Center"); jScrollPane2.setBounds(45, 215, 262, 109); { jTextArea2 = new JTextArea(); jScrollPane2.setViewportView(jTextArea2); } } { jButton1 = new JButton(); getContentPane().add(jButton1); jButton1.setText("发送"); jButton1.setBounds(245, 330, 62, 24); jButton1.addActionListener(new Chat_Send(this)); } { jButton2 = new JButton(); getContentPane().add(jButton2); jButton2.setText("清屏"); jButton2.setBounds(351, 169, 92, 24); jButton2.addActionListener(new Chat_eliminate(this)); } { jButton3 = new JButton(); getContentPane().add(jButton3); jButton3.setText("聊天记录"); jButton3.setBounds(351, 206, 92, 24); } { jLabel2 = new JLabel(); getContentPane().add(jLabel2); jLabel2.setText("客户B"); jLabel2.setBounds(339, 62, 112, 73); jLabel2.setFont(new java.awt.Font("华文行楷",1,36)); } { jLabel3 = new JLabel(); getContentPane().add(jLabel3); jLabel3.setText("客户A"); jLabel3.setFont(new java.awt.Font("华文行楷",1,36)); jLabel3.setBounds(339, 257, 112, 73); } pack(); this.setSize(500, 400); this.setLocationRelativeTo(null); this.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } //发送键——执行的操作 public void send() throws Exception{ //思路:把从输入框获得内容,放到聊天记录框,并把它写入到输出流中 String str=jTextArea2.getText()+"\n"; //jTextArea1.append("客户端:"+str); //发送完的内容放到接收文本框 OutputStream out=sk.getOutputStream(); PrintStream print=new PrintStream(out,true); print.print(str); jTextArea2.setText(""); //发送完之后输入框置空 } //清屏键——执行的操作 public void eliminate (){ jTextArea1.setText(""); } //实现接收客户端发来的数据 public void receive(){ try { //读取客户端发来的数据 InputStream in=sk.getInputStream(); //把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流) BufferedReader reader=new BufferedReader(new InputStreamReader(in)); String str=""; while((str=reader.readLine())!=null){ //把读到的信息放到聊天记录框中 jTextArea1.append("服务端:"); System.out.println("服务端:"); } } catch (IOException e) { e.printStackTrace(); } }}//发送键——实现监听class Chat_Send implements ActionListener{ private ChatAWT chat; public Chat_Send(ChatAWT chat) { super(); this.chat = chat; } public void actionPerformed(ActionEvent e) { try { chat.send(); } catch (Exception e1) { e1.printStackTrace(); } }}//清屏键——实现监听class Chat_eliminate implements ActionListener{ private ChatAWT chat; public Chat_eliminate(ChatAWT chat) { super(); this.chat = chat; } public void actionPerformed(ActionEvent e) { chat.eliminate(); }}客户端package chat;import java.io.*;import java.net.*;public class Chat { public static void main(String[] args) throws Exception { Socket sk = new Socket("127.0.0.1", 20139); ChatAWT chat = new ChatAWT(sk); ChatThread t = new ChatThread(chat, sk); t.start(); }}客户端线程package chat;import java.io.*;import java.net.Socket;public class ChatThread extends Thread { private ChatAWT chat; private Socket sk; //构建有参构造(目的:和界面) public ChatThread(ChatAWT chat, Socket sk) { super(); this.chat = chat; this.sk = sk; } public void run() { super.run(); try { while(true){ System.out.println("线程启动了"); //读取客户端发来的数据 InputStream in=sk.getInputStream(); System.out.println(sk.getInetAddress()); //把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流) BufferedReader reader=new BufferedReader(new InputStreamReader(in)); chat.jTextArea1.append("服务端:"+reader.readLine()); System.out.println("服务端:"); } } catch (IOException e) { e.printStackTrace(); } } }服务端package chat;import java.io.*;import java.net.*;import java.util.HashSet;import java.util.Scanner;import java.util.Set;//服务端public class Server { public static void main(String[] args) throws Exception { System.out.println("服务器已启动"); //创建serversocket对象 ServerSocket ss=new ServerSocket(20139); //进行监听,获得相应的客户端socket对象、 Socket sk=ss.accept(); //读取客户端发来输出流数据 InputStream in=sk.getInputStream(); OutputStream out=sk.getOutputStream(); //把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流) BufferedReader reader=new BufferedReader(new InputStreamReader(in)); String msg=""; while((msg=reader.readLine())!=null){ System.out.println("客户端:"+msg); //把得到的信息又返回给客户端 PrintStream print=new PrintStream(out,true); //会自动刷新和写如换行符'\n' print.print("我发出去了((()))"); System.out.println("我发出去了"); } }}服务端线程package chat;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;import java.util.Scanner;public class ServerThread extends Thread { private Socket sk; //有参构造(目的:和主线程产生关系) public ServerThread(Socket sk) { super(); this.sk = sk; } } Neko报错HIERARCHY_REQUEST_ERR JavaDoc中如何输出*/ netbeans 6.5 中如何设置 JFrame 的背景颜色? 我的程序 错在哪里? 快来看看啊,时间非常紧急!!! 请教高手,请问一个字符串的问题??? 大家来帮我看看这个socket通讯程序——100分——在线~ 三天问了N个人了,仍然无法解决的问题(SQL连接数据库:直连) 关于java中float类型相加的问题 各位大侠,求助关于在网页上播放视频,并且处理视频的问题? 请指教:持有对方引用 新人报道!小菜随便问个问题!!!!!!!!!!!!!!!!!
package chat;
//我的聊天工具
import java.awt.event.*;
import java.io.*;
import java.net.*;import javax.swing.*;
import javax.swing.event.*;public class ChatAWT extends javax.swing.JFrame {
private JLabel jLabel1;
private JLabel jLabel2;
private JLabel jLabel3;
private JButton jButton1;
private JButton jButton2;
private JButton jButton3;
public JTextArea jTextArea2;
public JTextArea jTextArea1;
private JScrollPane jScrollPane1;
private JScrollPane jScrollPane2;
private Socket sk; //Socket对象
private String Text=""; //接收聊天记录
public ChatAWT(Socket sk) throws Exception {
super();
initGUI();
this.sk=sk;
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
getContentPane().setBackground(new java.awt.Color(83,169,255));
{
jLabel1 = new JLabel();
getContentPane().add(jLabel1);
jLabel1.setText("我的聊天室");
jLabel1.setBounds(118, 12, 106, 26);
jLabel1.setFont(new java.awt.Font("新宋体",1,20));
}
{
jScrollPane1 = new JScrollPane();
getContentPane().add(jScrollPane1, "Center");
jScrollPane1.setBounds(45, 44, 262, 149);
{
jTextArea1 = new JTextArea();
jScrollPane1.setViewportView(jTextArea1);
jTextArea1.setBackground(new java.awt.Color(191,251,214));
jTextArea1.setEditable(false);
}
}
{
jScrollPane2 = new JScrollPane();
getContentPane().add(jScrollPane2, "Center");
jScrollPane2.setBounds(45, 215, 262, 109);
{
jTextArea2 = new JTextArea();
jScrollPane2.setViewportView(jTextArea2);
}
}
{
jButton1 = new JButton();
getContentPane().add(jButton1);
jButton1.setText("发送");
jButton1.setBounds(245, 330, 62, 24);
jButton1.addActionListener(new Chat_Send(this));
}
{
jButton2 = new JButton();
getContentPane().add(jButton2);
jButton2.setText("清屏");
jButton2.setBounds(351, 169, 92, 24);
jButton2.addActionListener(new Chat_eliminate(this));
}
{
jButton3 = new JButton();
getContentPane().add(jButton3);
jButton3.setText("聊天记录");
jButton3.setBounds(351, 206, 92, 24);
}
{
jLabel2 = new JLabel();
getContentPane().add(jLabel2);
jLabel2.setText("客户B");
jLabel2.setBounds(339, 62, 112, 73);
jLabel2.setFont(new java.awt.Font("华文行楷",1,36));
}
{
jLabel3 = new JLabel();
getContentPane().add(jLabel3);
jLabel3.setText("客户A");
jLabel3.setFont(new java.awt.Font("华文行楷",1,36));
jLabel3.setBounds(339, 257, 112, 73);
}
pack();
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
//发送键——执行的操作
public void send() throws Exception{
//思路:把从输入框获得内容,放到聊天记录框,并把它写入到输出流中
String str=jTextArea2.getText()+"\n";
//jTextArea1.append("客户端:"+str); //发送完的内容放到接收文本框
OutputStream out=sk.getOutputStream();
PrintStream print=new PrintStream(out,true);
print.print(str);
jTextArea2.setText(""); //发送完之后输入框置空
}
//清屏键——执行的操作
public void eliminate (){
jTextArea1.setText("");
}
//实现接收客户端发来的数据
public void receive(){
try {
//读取客户端发来的数据
InputStream in=sk.getInputStream();
//把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流)
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String str="";
while((str=reader.readLine())!=null){
//把读到的信息放到聊天记录框中
jTextArea1.append("服务端:");
System.out.println("服务端:");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}//发送键——实现监听
class Chat_Send implements ActionListener{
private ChatAWT chat;
public Chat_Send(ChatAWT chat) {
super();
this.chat = chat;
}
public void actionPerformed(ActionEvent e) {
try {
chat.send();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}//清屏键——实现监听
class Chat_eliminate implements ActionListener{
private ChatAWT chat;
public Chat_eliminate(ChatAWT chat) {
super();
this.chat = chat;
}
public void actionPerformed(ActionEvent e) {
chat.eliminate();
}
}客户端
package chat;import java.io.*;
import java.net.*;public class Chat {
public static void main(String[] args) throws Exception {
Socket sk = new Socket("127.0.0.1", 20139);
ChatAWT chat = new ChatAWT(sk);
ChatThread t = new ChatThread(chat, sk);
t.start();
}
}客户端线程
package chat;import java.io.*;
import java.net.Socket;public class ChatThread extends Thread {
private ChatAWT chat;
private Socket sk;
//构建有参构造(目的:和界面)
public ChatThread(ChatAWT chat, Socket sk) {
super();
this.chat = chat;
this.sk = sk;
}
public void run() {
super.run();
try {
while(true){
System.out.println("线程启动了");
//读取客户端发来的数据
InputStream in=sk.getInputStream();
System.out.println(sk.getInetAddress());
//把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流)
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
chat.jTextArea1.append("服务端:"+reader.readLine());
System.out.println("服务端:");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务端
package chat;import java.io.*;
import java.net.*;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
//服务端
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("服务器已启动");
//创建serversocket对象
ServerSocket ss=new ServerSocket(20139);
//进行监听,获得相应的客户端socket对象、
Socket sk=ss.accept();
//读取客户端发来输出流数据
InputStream in=sk.getInputStream();
OutputStream out=sk.getOutputStream();
//把字节流读到缓冲字符流中(new InputStreamReader(in)把字节流转化成字符流)
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String msg="";
while((msg=reader.readLine())!=null){
System.out.println("客户端:"+msg);
//把得到的信息又返回给客户端
PrintStream print=new PrintStream(out,true); //会自动刷新和写如换行符'\n'
print.print("我发出去了((()))");
System.out.println("我发出去了");
}
}
}服务端线程
package chat;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;public class ServerThread extends Thread {
private Socket sk;
//有参构造(目的:和主线程产生关系)
public ServerThread(Socket sk) {
super();
this.sk = sk;
}
}