基于TCP/IP的Socket编程,我想服务器端发出一个信息,然后客户端读出来.
服务器:
import java.io.*;
import java.net.*;
class server
{
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
System.out.println("服务器正在监听......");
OutputStream out=s.getOutputStream();
out.write(("欢迎你光临JAVA世界").getBytes());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
客户端:import java.io.*;
import java.net.*;class client
{
public static void main(String[] args)
{
try
{
Socket c=new Socket(InetAddress.getLocalHost(),9999);
BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));
String name=in.readLine();
System.out.println(name);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
出现问题,但是我把BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));这个换成InputStream in=c.getInputStream();然后在修改一下读取的方式:byte[] buf=new byte[100];
int len=in.read(buf);
System.out.println(new String(buf,0,len));
} 之后,这个程序就没有问题了,请问这是什么原因啊!我要用BufferedReader定义这个输入流对象应该怎么解决啊!
服务器:
import java.io.*;
import java.net.*;
class server
{
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
System.out.println("服务器正在监听......");
OutputStream out=s.getOutputStream();
out.write(("欢迎你光临JAVA世界").getBytes());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
客户端:import java.io.*;
import java.net.*;class client
{
public static void main(String[] args)
{
try
{
Socket c=new Socket(InetAddress.getLocalHost(),9999);
BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));
String name=in.readLine();
System.out.println(name);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
出现问题,但是我把BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));这个换成InputStream in=c.getInputStream();然后在修改一下读取的方式:byte[] buf=new byte[100];
int len=in.read(buf);
System.out.println(new String(buf,0,len));
} 之后,这个程序就没有问题了,请问这是什么原因啊!我要用BufferedReader定义这个输入流对象应该怎么解决啊!
out.write(("欢迎你光临JAVA世界").getBytes());
改为 PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
s.getOutputStream())),true);
System.out.println("服务器正在监听......");
out.write("欢迎你光临JAVA世界");
试一下
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
System.out.println("服务器正在监听......");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("Hello");
bw.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}}
把服务端该成OutputStreamWriter就正常了
可能是数据类型的问题