/*****************************以下是客户端的代码******************************/
import java.io.*;
import java.net.*;
public class client {
public static void main(String[] args) throws IOException {
String serverIP="122.207.171.140";
int serverPort=4567;
Socket socket=new Socket(serverIP , serverPort );
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
//向服务端发送数据
byte[] data="Hello,你好,我是杨飞龙".getBytes();
out.write(data);
//读取从服务端发送来的数据
int c;
byte[] dataFromServ = null;
while((c=in.read(dataFromServ))==-1)
{
System.out.println("从服务器接收到的数据为:"+new String(dataFromServ));
}
socket.close();
}}这是运行以后的控制台信息:
Exception in thread "main" java.lang.NullPointerException
at java.net.SocketInputStream.read(Unknown Source)
at client.main(client.java:26)import java.io.*;
import java.net.*;/******************************以下是服务端的代码**********************************/
public class server { public static void main(String[] args) throws IOException {
int serverPort=4567;
ServerSocket serverSocket=new ServerSocket(serverPort);
while(true)
{
Socket socket=serverSocket.accept();
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
//向客户端发送数据
byte[] dataSendToClient="杨,收到你的信息了".getBytes();
out.write(dataSendToClient);
int c;
byte[] dataReceivedFromClient=null;
while((c = in .read(dataReceivedFromClient))==-1)
{
System.out.println("从客户端接受到的数据为:"+new String(dataReceivedFromClient));
}
}
}}运行后的控制台信息:
Exception in thread "main" java.lang.NullPointerException
at java.net.SocketInputStream.read(Unknown Source)
at server.main(server.java:27)为什么客户端接收不到服务端发送的信息,服务端也接收不到客户端的信息???(我的机子没有联网,但是这两段代码都在我自己的机子上运行的,这会不会和我没联网有关啊???)
2.另外write后没有flush,内容还在本地缓冲中。
服务器端接收的while语句条件不对,应该是读到最后的时候是-1改成!=-1
然后客户端的ip连接最好设成127.0.0.1,
读写的顺序不是很对,最好给读写其中之一起一个线程
用out.println(data)试一下;
public class client {
public static void main(String[] args) throws IOException {
String serverIP = "localhost";
int serverPort = 4567;
Socket socket = new Socket(serverIP, serverPort);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 向服务端发送数据
byte[] data = "Hello,你好,我是杨飞龙\r\n".getBytes();
out.write(data);
socket.shutdownOutput();
// 读取从服务端发送来的数据
int c;
byte[] dataFromServ = new byte[1024];
while ((c = in.read(dataFromServ)) != -1) {
System.out.println("从服务器接收到的数据为:" + new String(dataFromServ,0,c));
}
in.close();
out.close();
socket.close();
}
}
public class server {
public static void main(String[] args) throws IOException {
int serverPort = 4567;
ServerSocket serverSocket = new ServerSocket(serverPort);
while (true) {
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 读取客户端的数据
int c;
byte[] dataReceivedFromClient = new byte[1024];
while ((c = in.read(dataReceivedFromClient)) != -1) {
System.out.println("从客户端接受到的数据为:"
+ new String(dataReceivedFromClient,0,c));
}
// 向客户端发送数据
byte[] dataSendToClient = "杨,收到你的信息了\r\n".getBytes();
out.write(dataSendToClient);
out.close();
in.close();
socket.close();
}
}
}