基于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定义这个输入流对象应该怎么解决啊!
解决方案 »
- 新手求一个java APIs中、英文版
- java.security.AccessControlException: access denied (java.io.FilePermission <<AL
- set
- netBeans的问题~~~Struts郁闷
- Rational ROSE 和 Rational XDE 有啥区别?
- 怎么才能让图像的背景透明
- 类型判断的问题
- 大家新年好,首先给大家拜个年!问一个问题:setPreferredSize()与setsize()有什么区别,什么时候用setPreferredSize(),什么时候用se
- 非常菜的两个问题。有劳各位了
- 求高手点拨一个“Java Socket项目本地双笔记本测试”的异常问题解决.
- 如何让float类型只保留4位有效位?
- 请教数据库的问题
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就正常了
可能是数据类型的问题