客户端通过socket向服务器端的指定端口发送数据
(2017-03-29 17:44:43)分类: Java |
客户端通过socket向服务器端的指定端口发送数据,最初一直报错:
at java.net.SocketInputStream.read(Unknown
Source)
at java.net.SocketInputStream.read(Unknown
Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown
Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown
Source)
at sun.nio.cs.StreamDecoder.read(Unknown
Source)
at java.io.InputStreamReader.read(Unknown
Source)
at java.io.BufferedReader.fill(Unknown
Source)
at java.io.BufferedReader.readLine(Unknown
Source)
at java.io.BufferedReader.readLine(Unknown
Source)
at MonitorPort.main(MonitorPort.
每当客户端发送数据时,服务器端就报下面的错误:
E:\javacode>java MonitorPort
Exception in thread "main" java.net.SocketException:
Connection reset
后来经过查找,发现把客户端加上flush和close就好了
MonitorPort .java
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class MonitorPort {
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket = new ServerSocket(80);
//监听8800端口
while(true){
Socket socket = serverSocket.accept();//等待客户连接
InputStream socketIn = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(socketIn));
String msg = null;
while ((msg=bufferedReader.readLine())!=null) {
System.out.println("接收到信息:" + msg);
}
}
}
}
SendDataToServerPort.java
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SendDataToServerPort {
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("192.168.10.35",80);
//向服务器端程序发送数据
OutputStream outputStream = socket.getOutputStream();
OutputStreamWriter outputStreamWriter = new
OutputStreamWriter(outputStream);
BufferedWriter bufferedWriter = new
BufferedWriter(outputStreamWriter);
bufferedWriter.write("hello server, can you receiver my
data?");
bufferedWriter.flush();
bufferedWriter.close();
socket.close();
System.out.println("finish send data!!");
}
}