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();
            }
        }
    }

}

}


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

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

maxcion
maxcion 谢谢了,新建了一个class 然后就可以了,太感谢了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java Socket---一个简单的即时通讯小Demo
服务器端代码package cn.java.net.TCP.infoExchange;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;public class Server { private static int count; private static Socket
一个简单地socket通讯Demo
首先贴出来我的项目结构。非常简单,new一个java project,在src下建一个名为socketDemo的package。在包里有两个java文件,一个是客户端,一个是服务端。 第二步,就是完场客户端和服务端的代码了。 服务端: package socketDemo; import java.io.*; import java.net.*; public c
Java socket通信实例,简单入门socket实例代码
是不是看了许多socket入门知识,却还是不能实际运用呢,这篇文章通过利用简单实例程序讲解通过socket实现客户端与服务器之间的通讯。这篇文章可以让你不需要了解socket原理也能利用,便于应急,但建议之后要好好补补关于soket的基础知识。 首先就是上代码,先是服务器端代码SocketServerDemo.java,里面已经有详细注释。 import java.io.BufferedRea
C++与Java使用SOCKET通信遇到的一种阻塞问题的解决
版权声明:本文为博主原创文章,未经博主允许不得转载                                                             本文遵循“署名-非商业用途-保持一致”创作公用协议                                                             Emai:catknight2016@sin
一个基于webSocket实现前后端通信的小demo
一般的web项目都是前台向后台发送消息,但是有些时候我们也需要从后端向前台发送消息,比如说zfb的回调信息,微信的模板推送消息等,下面通过Eclipse+Tomcat实现一个前后台通信的小demo; 先创建一个web项目  index.jsp写一个简单的页面来显示消息 Java后端WebSocket的Tomcat实现 Welcome 发送消息 关闭WebS
socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
最近在搞 一个智能家居项目,需要用到ios与 java 的 socket的通讯 在网上找到了十几分代码,关于通讯的写法大同小异,都是通过acsySocket 或者GCDsocket 这两个类库进行通讯的,具体用法其实很简单,及时先连接,然后调用代理方法进行接受数据,以及发送数据。 但是在实际操作中,后台要的数据是json字符串,但是无论我怎么给后台发送数据,后台总是接受不到我的数据,这样折腾了
java NIO socket 通信实例
java nio 通信简单 demo
java实现最简单socket通讯
一.服务器public class HServerApp implements Runnable { public int port; public HServerApp(int port) { this.port = port; } @Override public void run() { try { S
Socket开发之通讯协议及处理(解决粘包问题)
在Socket应用开发中,还有一个话题是讨论的比较多的,那就是数据接收后如何处理的问题。这也是一个令刚接触Socket开发的人很头疼的问题。 因为Socket的TCP通讯中有一个“粘包”的现象,既:大多数时候发送端多次发送的小数据包会被连在一起被接收端同时接收到,多个小包被组成一个大包被接收。有时候一个大数据包又会被拆成多个小数据包发送。这样就存在一个将数据包拆分和重新组合的问题
Java简单的UDP通讯例子
内容:简单的UDP通讯例子。 Receiver: public class Receiver { public static void main(String[] args) { DatagramSocket ds = null; try { //UDP接收端 ds = new DatagramSocket(8080); //定义将UDP的数据包接收到什么地