Java客户机-服务器套接字相关问题 import java.io.*; 导入java.net。*; 公共类客户端{ 公共静态void main(字符串[]args)引发异常{ 字符串ip=“localhost”; int端口=5643; 插座s=新插座(ip,端口); String str=“Sagar Tanwar”; OutputStreamWriter os=新的OutputStreamWriter(s.getOutputStream()); PrintWriter pw=新的PrintWriter(操作系统); os.write(str); os.flush(); } } 线程“main”java.net.ConnectException中的异常:拒绝连接(拒绝连接) 位于java.net.PlainSocketImpl.socketConnect(本机方法) 位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 位于java.net.socksocketimpl.connect(socksocketimpl.java:392) 位于java.net.Socket.connect(Socket.java:606) 位于java.net.Socket.connect(Socket.java:555) 位于java.net.Socket。(Socket.java:451) 位于java.net.Socket(Socket.java:228)

Java客户机-服务器套接字相关问题 import java.io.*; 导入java.net。*; 公共类客户端{ 公共静态void main(字符串[]args)引发异常{ 字符串ip=“localhost”; int端口=5643; 插座s=新插座(ip,端口); String str=“Sagar Tanwar”; OutputStreamWriter os=新的OutputStreamWriter(s.getOutputStream()); PrintWriter pw=新的PrintWriter(操作系统); os.write(str); os.flush(); } } 线程“main”java.net.ConnectException中的异常:拒绝连接(拒绝连接) 位于java.net.PlainSocketImpl.socketConnect(本机方法) 位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 位于java.net.socksocketimpl.connect(socksocketimpl.java:392) 位于java.net.Socket.connect(Socket.java:606) 位于java.net.Socket.connect(Socket.java:555) 位于java.net.Socket。(Socket.java:451) 位于java.net.Socket(Socket.java:228),java,Java,如果在客户端类结束时关闭连接,一切都将正常工作 String ip = "localhost"; int port = 5643; Socket s = new Socket(ip, port); String str = "Sagar Tanwar"; OutputStreamWriter os = null; try { os = new OutputStreamWriter(s.getO

如果在客户端类结束时关闭连接,一切都将正常工作

    String ip = "localhost";
    int port = 5643;
    Socket s = new Socket(ip, port);
    String str = "Sagar Tanwar";
    OutputStreamWriter os = null;
    try {
        os = new OutputStreamWriter(s.getOutputStream());
        os.write(str);
        os.flush();
    } finally {
        if (os != null)
            os.close();
    }
或者“尝试使用资源”


Client.java
中更改此行:

String str = "Sagar Tanwar";
致:


您的服务器希望读取一整行(
br.readLine()
),并继续读取,直到您的客户端保持连接。一旦客户端断开连接,就会引发异常,因为服务器无法读取新行

旁注 在我的系统上:

  • 如果服务器未处于活动状态,您的客户端将抛出:
    java.net.ConnectException:连接被拒绝:connect
  • 如果服务器无法从客户端读取整行数据,服务器将抛出:
    java.net.SocketException:Connection reset

也许可以检查您的防火墙?如果我使用ip地址而不是“localhost”,那么我在线程“main”java.net中遇到了此异常。ConnectException:Operation timed out(连接超时)能否回答您的问题,并提供您的环境的更多背景信息。个人笔记本电脑?访问同一台笔记本电脑?企业环境?访问不同的服务器?在同一个网络中,还是通过公共internet?在客户端类结束时关闭连接后,我仍然收到相同的错误。您需要先启动服务器,然后只启动到客户端
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws Exception {

        String ip = "localhost";
        int port = 5643;
        Socket s = new Socket(ip, port);
        String str = "Sagar Tanwar";
        OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream());
        PrintWriter pw = new PrintWriter(os);
        os.write(str);
        os.flush();
    }
}

    String ip = "localhost";
    int port = 5643;
    Socket s = new Socket(ip, port);
    String str = "Sagar Tanwar";
    OutputStreamWriter os = null;
    try {
        os = new OutputStreamWriter(s.getOutputStream());
        os.write(str);
        os.flush();
    } finally {
        if (os != null)
            os.close();
    }
    String ip = "localhost";
    int port = 5643;
    Socket s = new Socket(ip, port);
    String str = "Sagar Tanwar";
    try (OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream())) {
        os.write(str);
        os.flush();
    }
String str = "Sagar Tanwar";
String str = "Sagar Tanwar\r\n";