socket 的发送与接受!

jidushanbojue 2008-02-01 09:57:36
我觉得我的发送和接受程序没有问题,可是在调用发送程序的时候发出去的东西是很随机的,而且发布全,不知道是怎么回事,请高手指教!!
我发送程序:TCPSend.java
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;

public class TcpSend {
public void send(String str) {
try {
Socket s = new Socket(InetAddress.getByName("127.0.0.1"),6);
OutputStream ops = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(ops);
dos.writeBytes(str);
ops.close();
s.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
接受程序:TCPRecv.java
public class TcpRecv {
public static void main(String [] args) throws Exception
{
try {
ServerSocket server = new ServerSocket(6);
Socket s = server.accept();
InputStream ips = s.getInputStream();
byte []buf = new byte[1024];
int len = ips.read(buf);
String str = new String(buf,0,len);
System.out.println(str);
s.close();
server.close();
} catch (Exception e) {
System.out.println("UdpRecv:"+e.getMessage());
}
}
}
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tpz_stamp 2008-02-01
  • 打赏
  • 举报
回复
再添加一句 ops.flush() 试试看
老紫竹 2008-02-01
  • 打赏
  • 举报
回复
你的send(String str)中的str 到底有多长?如果超过1024个字节,在server端是收不全的,因为那面只有 new byte[1024]
如果你确认是一个字符串,可以用
BufferedReader reader = new BufferedReader(new InputStreamReader(ips));
String str = reader.readLine();
来读取一行字符串
晓筱时代 2008-02-01
  • 打赏
  • 举报
回复
发不全估计是在缓冲区里吧,照2楼的方法看看啊,程序本身好像是没问题的
jidushanbojue 2008-02-01
  • 打赏
  • 举报
回复
1楼的同志,我确定接收是字符串,我试了你的方法,还是那样,而且我这还总是随机报出
Software caused connection abort: socket write error
的错误,还有没有其他的方法?大家一起想想,多谢多谢!!

62,615

社区成员

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

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