socket发送,接收问题
新人第一次学这个,按照别人的代码改了一下
思路大概是客户端先向服务器发送一个abc,然后服务器收到后返回当前目录的所有文件的名字,然后我在客户端再输入一个文件的名字,服务器端能够读取出来里面的内容然后再给我发回来。
我现在遇到的问题是第一次调用
outToServer.writeBytes("abd.txt" + '\n');
modifiedSentence = inFromServer.readLine();
这个两句的时候可以实现一次发送和多次的接收(使用的while死循环,然后服务器那里如果都发完了会有一个end标记,客户端接收到以后会中断这个死循环)
但是第二次调用
outToServer.writeBytes("abd.txt" + '\n');
modifiedSentence = inFromServer.readLine();
这个的时候就不行了。我现在也不知道我到底是没法出去,还是没收到,还是什么问题。
想求各位帮忙解答下,是说这个只能够使用一次么?(服务器端通过while死循环不断接受,然后判断之后发送)
客户端
接收端:
思路大概是客户端先向服务器发送一个abc,然后服务器收到后返回当前目录的所有文件的名字,然后我在客户端再输入一个文件的名字,服务器端能够读取出来里面的内容然后再给我发回来。
我现在遇到的问题是第一次调用
outToServer.writeBytes("abd.txt" + '\n');
modifiedSentence = inFromServer.readLine();
这个两句的时候可以实现一次发送和多次的接收(使用的while死循环,然后服务器那里如果都发完了会有一个end标记,客户端接收到以后会中断这个死循环)
但是第二次调用
outToServer.writeBytes("abd.txt" + '\n');
modifiedSentence = inFromServer.readLine();
这个的时候就不行了。我现在也不知道我到底是没法出去,还是没收到,还是什么问题。
想求各位帮忙解答下,是说这个只能够使用一次么?(服务器端通过while死循环不断接受,然后判断之后发送)
客户端
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("127.0.0.1",6789);//hostname is server domainame
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
sentence = "abc";
outToServer.writeBytes(sentence + '\n');
while (true){
modifiedSentence = inFromServer.readLine();
if(modifiedSentence.equals("end")){
break;
}
System.out.println("目录为:"+modifiedSentence);
}
System.out.println("Please Enter File Name:");
// sentence = inFromUser.readLine();
// outToServer.writeBytes(sentence + '\n');
outToServer.writeBytes("abc.txt" + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER:"+modifiedSentence);
clientSocket.close();接收端:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by Administrator on 2016/4/13.
*/
public class TCPFileServer {
public static void main(String argv[]) throws Exception
{
String ClientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true){
File directory = new File("");//参数为空
String total = directory.getCanonicalPath() ;
Socket connectionSocket = welcomeSocket.accept();
BufferedReader infromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
ClientSentence = infromClient.readLine();
if(ClientSentence.equals("abc")){
// outToClient.writeBytes(total+'\n');
File file=new File(total);//获取某个目录下的所有文件名
String test[];
test=file.list();
for(int i=0;i<test.length;i++)
{
outToClient.writeBytes(test[i]+'\n');
// System.out.println(test[i]);
}
outToClient.writeBytes("end"+'\n');
}
else
{
try{
RandomAccessFile in=new RandomAccessFile(ClientSentence,"r");
String s;
total="";
while((s=in.readLine())!=null){
total=total+s;
}
outToClient.writeBytes(total+'\n');
in.close();
}
catch(Exception e){
outToClient.writeBytes(ClientSentence+" not found \n");
}
}
}
}
}
...全文
相关推荐
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
"Python中使用socket发送HTTP请求时可能会遇到数据接收不完整的问题,这通常是因为HTTP响应体可能被分成了多个TCP数据包。为了解决这个问题,我们可以使用一个循环来持续接收数据,直到所有
基于raw socket的UDP数据的发送和接收
最后,将数据附加到头部后面,一并发送出去。在接收端,同样需要创建并绑定Raw Socket,然后使用`recvfrom()`函数接收数据。
Socket发送并接收服务器返回的数据
综上所述,Android应用利用Socket进行数据发送与接收主要涉及建立连接、发送数据、接收数据以及异常处理和资源关闭等步骤。
udp发送接收图片含demo
此外,对于大型图片,可能需要分块发送和接收,以避免单个数据报文过大导致的丢包问题。总之,UDP Socket发送和接收图片涉及网络编程基础、图片编码与解码、数据报文的封装与解封装等多个知识点。
Python中解决使用socket发送HTTP请求数据接收不完整问题
然而,有时候我们可能会遇到接收到的HTTP响应数据不完整的问题。为了解决这个问题,我们可以使用一些技巧来确保完整地接收到HTTP响应数据。通过这种方式,我们可以确保接收到完整的HTTP响应数据。当然,这只是一个基本的示例,实际中可能需要处理更复杂的情况,例如处理响应头部、处理重定向等。方法来接收响应数据。由于数据可能被分成多个小块进行传输,我们使用一个循环来持续接收数据,并将每次接收到的数据追加到响应中,直到没有数据可接收。最后,我们关闭socket连接,并返回完整的响应数据。方法发送HTTP请求。


