//客户端
public class Test {
private static boolean is = true;
public static void main(String[] args) throws IOException,
InterruptedException {
Socket socket = new Socket("127.0.0.1", 6677);
System.out.println("链接成功");
Scanner scanner = new Scanner(System.in);
while (is) {
System.out.println("请输入!!!");
int n = scanner.nextInt();
switch (n) {
case 1:
OutputStream os = socket.getOutputStream();
os.write("hello world".getBytes());
os.flush();
// os.close();
// socket.close();
// IoUtil.IoClose(os);
System.out.println("发送成功");
break;
case 2:
System.out.println("循环关闭");
is = false;
break;
default:
is = false;
System.out.println("输入错误---循环关闭");
break;
}
}
}
}
//服务器端 太多了 就贴一部分
@Override
public void run() {
MessageThread messageThread = null;
InputStream iss = null;
InputStreamReader isr = null;
BufferedReader br = null;
while (is) {
try {
// 监听
Socket socket = serverSocket.accept();
System.out.println("链接成功");
iss = socket.getInputStream();
isr = new InputStreamReader(iss);
br = new BufferedReader(isr);
String len;
StringBuffer sb = new StringBuffer();
while ((len = br.readLine()) != null) {
sb.append(len);
}
System.out.println(sb.toString());
// iss.close();
// IoUtil.IoClose(br, isr, iss);
SocketMap.put(sb.toString(), socket);
/**
* 开启接受消息的线程
*/
messageThread = new MessageThread(socket);
messageThread.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
messageThread.setFlag(false);
}
}
大致代码就这些 问题出在 socket 可以链接成功 但是 客户端发送的消息要等 客户端断开链接之后才能接收到 或者 关闭客户端的输出流也可以!
C#为客户端的时候也一样!