import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args){
try{
ServerSocket ss=new ServerSocket(5001);
Socket s=ss.accept();//establishes connection
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
if ("Hi".equals(str)){
dout.writeUTF("How are you?");
} else if ("Bye".equals(str)){
dout.writeUTF("Thankyou! Have a Good day!");
} **else if (str != null)){
try {
String numbers;
numbers = str.replaceAll("[^0-9]", "");
int number = Integer.parseInt(numbers);
dout.writeUTF("The line is being printed");
for (int i = 0; i < number; i++) {
dout.writeUTF(str.replaceAll("[^a-z,^A-Z]", ""));
}
} catch (Exception e) {
//TODO: handle exception
}**
} else {
dout.writeUTF("Sorry!");
}
dout.flush();
dout.close();
s.close();
ss.close();
} catch(Exception e) {
System.out.println(e);
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
public class MyClient {
public static void main(String[] args) {
try{
Scanner sc = new Scanner(System.in);
Socket s=new Socket("localhost",5001);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
String str1= sc.nextLine();
dout.writeUTF(str1);
dout.flush();
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
dout.close();
dis.close();
s.close();
} catch(Exception e) {
System.out.println(e);}
}
}
我从客户端向服务器提供输入,并希望该输入在客户端打印多次。但做不到。谁能让我知道我在这里犯了什么错误?它正在回复消息“嗨”和“再见”,其他一切都很好。
以下是您的代码和我的更正。
(代码后面的注释。)
类MyServer
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
try (ServerSocket ss = new ServerSocket(5001)) {
Socket s = ss.accept();// establishes connection
InputStream is = s.getInputStream();
int count = is.available();
while (count <= 0) {
try {
Thread.sleep(1000L);
System.out.println("'MyServer' is sleeping (for one second)...");
}
catch (InterruptedException xInterrupted) {
// Ignore.
}
count = is.available();
}
DataInputStream dis = new DataInputStream(is);
String str = dis.readUTF();
System.out.println("message= " + str);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
if ("Hi".equals(str.trim())) {
dout.writeUTF("How are you?");
}
else if ("Bye".equals(str)) {
dout.writeUTF("Thankyou! Have a Good day!");
}
else if (str != null) {
try {
String numbers;
numbers = str.replaceAll("[^0-9]", "");
int number = Integer.parseInt(numbers);
dout.writeUTF("The line is being printed");
for (int i = 0; i < number; i++) {
dout.writeUTF(str.replaceAll("[^a-z,^A-Z]", ""));
}
dout.flush();
}
catch (Exception e) {
e.printStackTrace();
}
}
dout.flush();
}
catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(2000L);
}
catch (InterruptedException xInterrupted) {
// Ignore.
}
}
}
类MyClient
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;
public class MyClient {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
try (Socket s = new Socket("localhost", 5001);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
DataInputStream dis = new DataInputStream(s.getInputStream())) {
dout.writeUTF(str1);
dout.flush();
try {
Thread.sleep(500L);
}
catch (InterruptedException xInterrupted) {
// Ignore.
}
String str = dis.readUTF();
System.out.println("message= " + str);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
使用依赖关系spring-cloud-starter-zipkin,应用程序应该在sleuth触发时连接到zipkin服务器。我没有启动zipkin服务器,所以它应该抛出一个连接异常。但什么也没发生。而当我启动zipkin服务器时,它不能接收任何东西。 应用程序.属性 和日志
我制作了一个FTP客户端(被动),它无法连接到服务器。我使用的FTP服务器是Filezilla;我只是用它来测试。每次我运行java程序(FTP客户端)时,Filezilla都会断开连接,并在Eclipse中出现以下错误: 这是FTP客户端: 这是我连接的程序: 还尝试编写我的lan ip而不是
我目前有一个在非阻塞模式下使用 NIO java 库编写的桌面服务器。您可以在此处找到完整的服务器项目。我还创建了一个用于测试目的的非阻塞 NIO 客户端。你可以在这里找到这个项目。最后,服务器应该用于Android即时通讯应用程序。我使客户端和服务器都基于发送“数据包”进行通信的想法。我的意思是,Packet 类的引用被打包到字节缓冲区中并通过套接字通道发送。然后,它们在另一端反序列化并执行。
问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成
问题内容: 我想在两个或更多不同的node.js应用程序服务器之间启用基于套接字的p2p通信。我正在使用socket.io处理给定服务器与其服务的Web应用程序之间的所有此类通信- 但我正在寻找的是一种服务器与服务器之间进行通信的方法。 我最初以为它像这样简单: 但是,事实证明,服务器端socket.io实现没有提供“连接”方法,仅提供了侦听方法。 为什么是这样?为什么不能将节点应用程序服务器视为
null 对于SocketRocket,我用代码1000关闭服务器端的websocket,客户机经常读取1001。 对于Tyrus,我用代码1011关闭websocket,客户机读取1006或1011。 RFC 6455中的关闭代码说明: close代码作为将信息从服务器传递到客户机的一种手段是不可靠的吗?在关闭WebSockets之前,我需要在应用程序层实现传递此信息的东西吗?