再请教,socket客户端发送的信息为何服务器商接收不到?

cqandy 2008-07-26 11:02:47
问题说明:下边的client代码与server代码,当client发出连接后(按钮按下后),服务器端能响应,但server端就是不能打印(显示)client传来的信息


客户端通过一个按钮来进行与服务器端的socket连接
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
Vector vreg=new Vector();
vreg.add(nc.getText());
vreg.add(xm.getText());
vreg.add(xb.getSelectedItem().toString());
vreg.add(ll.getText());

try{
link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));

link_server.connect(link_sa);
link_sosw=new OutputStreamWriter(link_server.getOutputStream());
link_bwout=new BufferedWriter(link_sosw);
String send_s=null;
Iterator itr=vreg.iterator();
while(itr.hasNext())
{
send_s=(String) itr.next();
link_bwout.write(send_s);
link_bwout.flush();
}
}
catch(Exception ex)
{

}
}





服务器端接收代码:
public class Main extends javax.swing.JFrame {
.....
public Main() {
......
waitlink();
}
void waitlink()
{
try
{
ss=new ServerSocket(9091);

servers=ss.accept();

sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{

jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}
}
catch(Exception e)
{

}

}
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengpeng1989 2010-07-20
  • 打赏
  • 举报
回复
常识更改服务器端的IP地址看看
zhj92lxs 2008-07-27
  • 打赏
  • 举报
回复
void waitlink()
{
try
{
ss=new ServerSocket(9091);

servers=ss.accept();

sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));

//bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{

jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}

ss.close();
//bw.write("hello");
}
catch(Exception e)
{
e.printStackTrace();
}


}
cqandy 2008-07-26
  • 打赏
  • 举报
回复
client端代码:


package hhchat;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Iterator;
import java.util.Vector;
import com.microsoft.jdbc.sqlserver.*;

public class hhReg extends javax.swing.JFrame {

/** Creates new form hhReg */

Socket link_server=new Socket();
String link_sports="9091";
java.net.SocketAddress link_sa=null;
BufferedWriter link_bwout=null;
BufferedReader link_brin=null;
java.io.InputStreamReader link_sisr=null;
java.io.OutputStreamWriter link_sosw=null;

String link_server_ip=null;
public hhReg() {
initComponents();
}

// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">
private void initComponents() {
...
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
Vector vreg=new Vector();

vreg.add(nc.getText());
vreg.add(xm.getText());
vreg.add(xb.getSelectedItem().toString());
vreg.add(ll.getText());

try{
link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));

link_server.connect(link_sa);
link_sosw=new OutputStreamWriter(link_server.getOutputStream());
link_bwout=new BufferedWriter(link_sosw);
String send_s=null;
Iterator itr=vreg.iterator();
while(itr.hasNext())
{
send_s=(String) itr.next();
link_bwout.write(send_s);
link_bwout.flush();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}

}


public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new hhReg().setVisible(true);
}
});
}

// 变量声明 - 不进行修改
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JTextField ll;
private javax.swing.JTextField nc;
private javax.swing.JComboBox xb;
private javax.swing.JTextField xm;
// 变量声明结束

}
cqandy 2008-07-26
  • 打赏
  • 举报
回复
在下将我的报错代码全贴出,望老师指教,谢谢

server端代码:

package testsocket;
import java.net.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import javax.swing.*;

public class Main extends javax.swing.JFrame {

private ServerSocket ss;

private Socket servers;

java.io.BufferedReader sdis=null;

java.io.InputStreamReader isr=null;

java.io.BufferedWriter bw=null;//输出流

java.io.OutputStreamWriter osw=null;//


/** Creates new form Main */

public Main() {
initComponents();
waitlink();
}

void waitlink()
{
try
{
ss=new ServerSocket(9091);

servers=ss.accept();

sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));

//bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{

jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}


//bw.write("hello");
}
catch(Exception e)
{
e.printStackTrace();
}


}


private void initComponents() {
...

}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
try
{
bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
bw.write(jTextField1.getText());
}
catch(Exception e)
{

}
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}

// 变量声明 - 不进行修改
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextArea jta1;
// 变量声明结束


}
cqandy 2008-07-26
  • 打赏
  • 举报
回复
的确是有异常

我的操作过程是:

C/S全部在本机上测试,即一台电脑

1.首选启动server端程序,由于accept()阻塞,并不显示server端的窗口

2.启动client端程序,输入一些信息后,通过一个按钮,与server建立socket

这时,服务器也不显示窗口,但我先关闭client端窗口,再去看netbeans5.5的输入有如下报错:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at testsocket.Main.waitlink(Main.java:51)
at testsocket.Main.<init>(Main.java:36)
at testsocket.Main$2.run(Main.java:165)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
老师请指点呀!!!
zhj92lxs 2008-07-26
  • 打赏
  • 举报
回复
e.printStackTrace()看看是不是有异常

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧