我想client端写一个串,再读一个串。server端读一个串,再写一个串。
代码如下:Server在1处阻塞,Client在2处阻塞。这个功能应该怎样实现?
Server:
ServerSocket server = new ServerSocket(1025);
Socket socket = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)<----1
{
System.out.println(line);
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
writer.write("helloWorld!");
writer.close();
reader.close();
socket.close();
server.close();Client:
Socket client = new Socket("127.0.0.1", 1025);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
writer.write("helloWorld!");
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(client
.getInputStream())); String line = null;
while ((line = reader.readLine()) != null)<---2
{
System.out.println(line);
} writer.close();
reader.close();
client.close();
代码如下:Server在1处阻塞,Client在2处阻塞。这个功能应该怎样实现?
Server:
ServerSocket server = new ServerSocket(1025);
Socket socket = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)<----1
{
System.out.println(line);
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
writer.write("helloWorld!");
writer.close();
reader.close();
socket.close();
server.close();Client:
Socket client = new Socket("127.0.0.1", 1025);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
writer.write("helloWorld!");
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(client
.getInputStream())); String line = null;
while ((line = reader.readLine()) != null)<---2
{
System.out.println(line);
} writer.close();
reader.close();
client.close();
解决方案 »
- 反序列化出现版本号不对
- 大家执行下我这个小代码看,是否有同样的问题。JFrame
- 想问一下关于 java和c 之间有没有算法相同的md5加密现在出现一个问题!
- 怎样求当天所在周剩余的天数?
- 如何在JTextPane中获得光标的位置,急啊
- jPopupMenu 疑问,高手请进
- 要做java的图像处理,感觉资料缺乏,又比较零乱,开个贴,大家一起收集,一起学习,有关java的图像处理资料都在这贴出
- java面向对象编程—————————编译包,执行时出现异常
- java的对象、对象句柄、变量等在内存的分布是什么样的?
- 大家说说新手先学JBuilder,还是先学JAVA的API?
- 我的jxl.jar怎么不能引用?
- 我是初学j2se的请前辈指指路线
ServerSocket server = new ServerSocket(1025);
Socket socket = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
while (true)<----1
{
if ((line = reader.readLine()).equals("END") bread;
System.out.println(line); writer.write(String s = new BufferedReader(new InputStreamReader(System.in)).readLine());
writer.flush();
}
writer.close();
reader.close();
socket.close();
server.close();Client:
Socket client = new Socket("127.0.0.1", 1025);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
writer.write("helloWorld!");
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(client
.getInputStream()));
String s = null;
while (true)
{
System.out.println(reader.readLine());
System.out.println(line); writer.write( s = new BufferedReader(new InputStreamReader(System.in)).readLine());
writer.flush();
if (s.equals("END")) break;
} writer.close();
reader.close();
client.close();
OutputStream os = socket.getOutputStream();
ObjectInputStream objIn = new ObjectInputStream(is);<--1
ObjectOutputStream objOut = new ObjectOutputStream(os);
知道1处为什么会阻塞吗?
// From 'Thinking in Java, 2nd ed.' by Bruce Eckel
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
// Very simple client that just sends
// lines to the server and reads lines
// that the server sends.
import java.net.*;
import java.io.*;public class JabberClient {
public static void main(String[] args)
throws IOException {
// Passing null to getByName() produces the
// special "Local Loopback" IP address, for
// testing on one machine w/o a network:
InetAddress addr =
InetAddress.getByName(null);
// Alternatively, you can use
// the address or name:
// InetAddress addr =
// InetAddress.getByName("127.0.0.1");
// InetAddress addr =
// InetAddress.getByName("localhost");
System.out.println("addr = " + addr);
Socket socket =
new Socket(addr, JabberServer.PORT);
// Guard everything in a try-finally to make
// sure that the socket is closed:
try {
System.out.println("socket = " + socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Output is automatically flushed
// by PrintWriter:
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
System.out.print("Client:");
BufferedReader clientInput = new BufferedReader(new InputStreamReader(System.in));
out.println(clientInput.readLine());
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println("Server: " + str);
System.out.print("Client:");
BufferedReader myInput = new BufferedReader(new InputStreamReader(System.in));
String ss = myInput.readLine();
out.println(ss);
}
} finally {
System.out.println("closing...");
socket.close();
}
}
} ///:~
/////////////////////////////////////////////////////
//: c15:JabberServer.java
// From 'Thinking in Java, 2nd ed.' by Bruce Eckel
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
// Very simple server that just
// echoes whatever the client sends.
import java.io.*;
import java.net.*;public class JabberServer {
// Choose a port outside of the range 1-1024:
public static final int PORT = 8080;
public static void main(String[] args)
throws IOException {
ServerSocket s = new ServerSocket(PORT);
System.out.println("Started: " + s);
try {
// Blocks until a connection occurs:
Socket socket = s.accept();
try {
System.out.println(
"Connection accepted: "+ socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Output is automatically flushed
// by PrintWriter:
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println("Client: " + str);
System.out.print("Server: ");
BufferedReader myInput = new BufferedReader(new InputStreamReader(System.in));
String ss = myInput.readLine();
out.println(ss);
}
// Always close the two sockets...
} finally {
System.out.println("closing...");
socket.close();
}
} finally {
s.close();
}
}
} ///:~
建議 樓主 去看一下 think in java 裡面有代碼實現(好像十四章,具體忘了)