JAVA socket 收不到数据 求指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA socket 收不到数据 求指点相关的知识,希望对你有一定的参考价值。

//client
package lw.Net.SocketStop;
import java.io.*;
import java.net.*;
public class Sender

private String host="127.0.0.1";
private int port=1001;
private Socket s;
public static int stopWay=1;
private String msg="hello";

public Sender() throws IOException

s=new Socket(host,port);

public void sent() throws Exception

PrintWriter pw=new PrintWriter(s.getOutputStream());
for(int i=0;i<2;i++)

pw.println(msg+i+",");
System.out.println("sent NO."+i+" data");
Thread.sleep(1000);
s.close();



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

new Sender().sent();


//server
package lw.Net.SocketStop;
import java.io.*;
import java.net.*;

public class Receiver

/**
* @param args
*/

private int port=1001;
private ServerSocket ss;
private Socket s;
private String msg;

public Receiver() throws IOException


ss=new ServerSocket(port);
System.out.print("Server started!");


public void receive() throws Exception

s=ss.accept();
System.out.println("发现socket请求!"+s.getPort());
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));

for(int i=0;i<2;i++)


msg=br.readLine();
System.out.println("receive:"+msg);
Thread.sleep(1000);


s.close();
ss.close();


public static void main(String[] args) throws Exception
// TODO Auto-generated method stub
if(args.length>0)

stopWay=Integer.parseInt(args[0]);


new Receiver().receive();



参考技术A 先运行Receiver,再运行Sender。

System.out.println("sent NO."+i+" data");
System.out.println("receive:"+msg);
这两句打印了没?追问

System.out.println("sent NO."+i+" data");

这句有打印出来;
System.out.println("receive:"+msg);

这句打印的是receive:null两次

追答

System.out.println("sent NO."+i+" data");
这句没有打印说明没有发送成功呀。所以接收的就是null。
你要先运行Receiver.java再运行Sender.java

追问

System.out.println("sent NO."+i+" data");

这句能打印出来

我发现问题在哪了,在Sender端关闭socket前 关闭流(pw.close()) Receiver端就可以收到数据, 大神知道什么原因吗 我不是很明白啊

追答

因为你的pw是由s创建的,你在第一次循环的时候就s.close,那么下一次循环就没了。

你把s.close();写到for循环外面。这样:
pw.close();
s.close();

C# Socket Server 收不到数据

#/usr/bin/env python
# -*- coding: utf-8 -*-

#                    C# Socket Server 收不到数据
# 说明:
#     最近在调Python通过Socket Client连接C#的Socket Server,但是Server端能检测到连接,
# 却收不到数据,这个问题困扰了几个小时,最后是因为Python这边发送完数据,直接关闭了
# 连接,最好是sleep一点点时间再关闭Socket,这样就能正常受到数据了。
#
#                                                 2016-11-09 深圳 南山平山村 曾剑锋

...

class Network(threading.Thread):

    def connect(self):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.connect((configures.remoteConfig.ip, configures.remoteConfig.port))

    def sendData(self, data):
        if self.sock != None:
            self.sock.send(data)

    def disconnect(self):
        if self.sock != None:
            self.sock.close()

    def run(self):

        self.connect()
        self.sendData(bytes(self.data, encoding = "utf8"))
        time.sleep(0.1%10)      # 这里一定要设定一个延时
        self.disconnect()

 

以上是关于JAVA socket 收不到数据 求指点的主要内容,如果未能解决你的问题,请参考以下文章

C# Socket Server 收不到数据

PHP 求助,SOCKET收不到响应

什么是套接字(socket)求大神帮助

thinkphp提交表单后 $_POST收不到数据,很是郁闷??????????????

socket网络编程

瑞友天翼提示Socket Error #10060 connection timed out....求高手指点