2 maxcion maxcion 于 2017.01.16 12:17 提问

Java Socket通讯简单demo遇到的问题,求大神帮助

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpIpTest {

public static void main(String[] args) {
    int i = 9090;
    String s = new String("127.0.0.1");

// String content = new String("hello,I am client");
Client client = new Client(s,i);
// Client client = new Client(s, content, i);
Server server = new Server(i);
//System.out.println("11111111111111111111");
server.start();
client.start();
//System.out.println("211111111111111111111");

}

}

class Client {

String str = null;
String content;
int i;

Socket socket = null;
OutputStream os = null;

// Client(String str, String content, int i) {
// this.str = str;
// this.content = content;
// this.i = i;
//
// }

Client(String str, int i) {
    this.str = str;
    // this.content=content;
    this.i = i;
}

void start() {
    try {
        socket = new Socket(InetAddress.getByName(str),i);
        os = socket.getOutputStream();
        os.write(str.getBytes());
        socket.shutdownOutput();
    } catch (UnknownHostException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    } finally {
        try {
            if (os != null)
                os.close();
        } catch (IOException e1) {

            e1.printStackTrace();
        }
        try {
            if (socket != null)
                socket.close();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }
}

}

class Server {
int i;
ServerSocket ss=null;
InputStream is = null;
Socket s = null;

Server(int i) {
    this.i = i;

}

void start() {
    try {
        ss = new ServerSocket(i);

        s = ss.accept();
        // ss.setSoTimeout(2500);
        is = s.getInputStream();
        int len ;
        byte[] b = new byte[20];
        while ((len = is.read(b)) != -1) {
            String s1 = new String(b, 0, len);
            System.out.println(s1);
        }
    } catch (IOException e) {

        e.printStackTrace();
    } finally {
        if (is != null) {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (s != null) {
            try {
                s.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
        if (ss != null) {
            try {
                ss.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
    }

}

}


无法进行通讯
下面是日志截图![图片说明](http://img.ask.csdn.net/upload/201701/16/1484540208_603025.png)图片说明

2个回答

qq_33750826
qq_33750826   2017.01.16 13:32
已采纳

很明显你的服务端已经写好了,客户端可能有点问题,我看你的代码我只想说一句垃圾代码。看的太费劲了

qq_33750826
qq_33750826 回复maxcion: 当然也可以不开启两个eclipse,如果你的电脑承受不了,你可以运行两个类 ,这个两个类分别在不同的控制台,你切换一下控制台的输入就好了
11 个月之前 回复
maxcion
maxcion 回复因为我是王涛: 谢谢涛哥,之前以为 只要先启动Server 然后在启动Client 就可以。。。。谢谢涛哥了
11 个月之前 回复
qq_33750826
qq_33750826 回复maxcion: 你可以开启两个eclipse一个当作服务端,一个当作客户端,想要通信他们的Ip和端口必须是一样的。
11 个月之前 回复
maxcion
maxcion 刚开始学,您多谅解。。。不知道会不会打扰您,您觉得那里有问题,如果说起来比较麻烦,你就随便指出一下,然后我在自己摸索
11 个月之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2017.01.16 14:16

不能一起启动,,单独启动试试

maxcion
maxcion 谢谢了,新建了一个class 然后就可以了,太感谢了
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!