Java 第一个网络计划的帮助
这是密码Java 第一个网络计划的帮助,java,networking,Java,Networking,这是密码 public class testClient { public static void main(String[] args) { testClient abc = new testClient(); abc.go(); } public void go() { try { Socket s = new Socket("127.0.0.1", 5000); InputStreamReader sr = new InputSt
public class testClient {
public static void main(String[] args) {
testClient abc = new testClient();
abc.go();
}
public void go() {
try {
Socket s = new Socket("127.0.0.1", 5000);
InputStreamReader sr = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(sr);
String x = reader.readLine();
System.out.println(x);
reader.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
}
public class testServer {
public static void main(String[] args) {
testServer server = new testServer();
server.go();
}
public void go() {
try {
ServerSocket s = new ServerSocket(5000);
while(true) {
Socket sock = s.accept();
PrintWriter writer = new PrintWriter(sock.getOutputStream());
String toReturn = "No cake for you.";
writer.println(toReturn);
}
} catch(IOException ex) {
ex.printStackTrace();
}
}
}
java.io.*
和java.net.*
都在这两个类中导入
现在,当我尝试运行这些(使用不同的终端)时,什么都没有发生。我做错了什么
屏幕:您的输出显然已缓冲。写入输出后,请尝试刷新:
writer.println(toReturn);
writer.flush();
也可以考虑在服务器中调用<代码> Sock.Cocket()/<代码>,如果您完成了套接字,否则客户端将不知道下一步该做什么。
< P>当使用打印机时,您需要调用FLASH方法。将您的代码更改为以下代码,并且可以正常工作:)看看这个简单的工作示例
import java.net.*;
import java.io.*;
public class Server {
Server() throws IOException {
ServerSocket server = new ServerSocket( 4711 );
while ( true ) {
Socket client = server.accept();
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
int multiplikator1 = in.read();
int multiplikator2 = in.read();
int resultat = multiplikator1 * multiplikator2;
out.write(resultat);
}
public static void main (String[] args) {
try {
Server server = new Server();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.net.*;
import java.io.*;
public class Client {
Client() throws IOException {
Socket server = new Socket ( "localhost", 4711 );
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
out.write( 4 );
out.write( 9 );
int result = in.read();
System.out.println( result );
server.close();
}
public static void main (String[] args) {
try {
Client client = new Client();
} catch (IOException e) {
e.printStackTrace();
}
}
}
关闭writer。如果您远程登录服务器,服务器是否正常工作
telnet localhost 5000
应该会告诉您。然后,您只需要一次调试一半。(注意,无论是哪种字符编码都是默认的,在两个方面都是默认的。最好是显式指定一个编码,可能是UTF-8。也可以是代码> PrimTrrITE/<代码>处理异常,所以您可能需要考虑一个不同的代码>编写器< /C>)。更重要的是,它还可以完成flush()。我永远记不起调用PrintWriter.close()之类的函数是否会关闭底层OutputStream。它会关闭底层OutputStream,但您必须成功创建PrintWriter
,因此您也可以关闭底层流,无论如何都必须关闭底层流(在高兴的情况下给装饰程序一个刷新后)。对于套接字,关闭其中一个流实际上默认关闭套接字。
import java.net.*;
import java.io.*;
public class Server {
Server() throws IOException {
ServerSocket server = new ServerSocket( 4711 );
while ( true ) {
Socket client = server.accept();
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
int multiplikator1 = in.read();
int multiplikator2 = in.read();
int resultat = multiplikator1 * multiplikator2;
out.write(resultat);
}
public static void main (String[] args) {
try {
Server server = new Server();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.net.*;
import java.io.*;
public class Client {
Client() throws IOException {
Socket server = new Socket ( "localhost", 4711 );
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
out.write( 4 );
out.write( 9 );
int result = in.read();
System.out.println( result );
server.close();
}
public static void main (String[] args) {
try {
Client client = new Client();
} catch (IOException e) {
e.printStackTrace();
}
}
}