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();
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 收不到数据 求指点的主要内容,如果未能解决你的问题,请参考以下文章