关于socket 大家 帮忙看下……谢谢

不用了的号 2010-05-09 12:03:37
//这是我的服务端
public class Server {

public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(19887);
System.out.println("端口创建成功");
System.out.println(server.getLocalPort());
Socket mylisten = server.accept();
System.out.println("有客户端进来");

// 直接封装
BufferedReader mmin = new BufferedReader(new InputStreamReader(
mylisten.getInputStream()));
PrintWriter mmout = new PrintWriter(new OutputStreamWriter(mylisten
.getOutputStream()));

mmout.write("欢迎光临");
mmin.readLine();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

//这是我的客户端
public class Client {

public static void main(String[] args) {
try {
Socket mysc = new Socket("127.0.0.1", 19887);
InputStream in = mysc.getInputStream();
OutputStream out = mysc.getOutputStream();
InputStreamReader myin = new InputStreamReader(in);
OutputStreamWriter myout = new OutputStreamWriter(out);
BufferedReader mmin = new BufferedReader(myin);
PrintWriter mmout = new PrintWriter(myout);
mmin.readLine();
mmout.write("你好");

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

我理解是这样的,运行服务端,当服务器开始监听后,运行客户端,当客户端连接到服务端,服务端向客户端发送“欢迎光临” 也就是这句代码 mmout.write("欢迎光临"); 然后客户端读到内容 再向服务端发送你好……我写的是这样的流程嘛,我是这样想的,大家 能否给个解释……谢谢大家 了 等着做一个小项目这个问题卡了我半天,大哥哥们,大姐姐们多多指点下……
...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
不用了的号 2010-05-12
  • 打赏
  • 举报
回复
谢谢大家 热心 的支持……还有好多学的,谢谢指点,多多学习!
pengliming1 2010-05-10
  • 打赏
  • 举报
回复
顶。。。。。
不用了的号 2010-05-10
  • 打赏
  • 举报
回复
我想要的就是服务 器创建,一有用户连接进来,我就给他发一下消息,然后他在给我发一条消息,做一个简单的交互……就这么简单,一个聊天对话[Quote=引用楼主 smilezkangel 的回复:]
//这是我的服务端
public class Server {

public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(19887);
System.out.println("端口创建成功");
System.out.println(server.getLocalPo……
[/Quote]
chy2012 2010-05-10
  • 打赏
  • 举报
回复
做这种服务器与客户端对聊的程序最好代码要写的清晰:(可以参考下以下思路:)
服务器:
1、创建ServerSocket//serverSocket
2、创建并启动监听线程
3、监听连接创建和客户端通信的连接

客户端就比较简单做个读写的就行


xiaxinhuo 2010-05-10
  • 打赏
  • 举报
回复
已经被4楼回答完了,楼主的思路是没问题的,就是细节方面没把握住
libitum_1 2010-05-10
  • 打赏
  • 举报
回复
学习 学习
charles361 2010-05-10
  • 打赏
  • 举报
回复
see。。。。。。。。。。。。
bawgiitx 2010-05-10
  • 打赏
  • 举报
回复
用readLine();时
write(msg+"\n");
"\n"不要少了
snoowball 2010-05-10
  • 打赏
  • 举报
回复
思路是正确的,其中有几个细节问题:

1. 一楼提过,PrintWriter要注意缓冲区的问题。PrintWriter默认是Full Buffer,就是缓冲区满了才会写出去,要改成Line Buffer要用PrintWriter pw = new PrintWriter(stream, true);这样写一行就能马上从缓冲区刷新出去。但同时,用write还是不能做到这一点,必须用pw.println()才能保证写一行马上刷新缓冲区,所以所有的pw.write都应该换成pw.println

2. socket之间的通信没问题,但没有把输出反映到屏幕上,用System.out.println(mmin.readLine())即可。

测试了一下,没问题
jayqean 2010-05-09
  • 打赏
  • 举报
回复
lz有什么问题吗?PrintWriter发现发送消息后,要刷新,new 出来的时候,后面加个true吧

62,614

社区成员

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

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