先启动服务器端程序,再启动客户端程序。先由客户端发送一行字符串过去,服务器收到后再返回一个字符串,现在一运行程序就卡死了,求解?服务器端代码如下:public class ServerTest
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(4000);
Socket socket = ss.accept();
InputStream is = socket.getInputStream();
String str = "";
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer, 0, buffer.length)) != -1)
{
str += new String(buffer, 0, len);
}
System.out.println("客户端发送数据为:" + str);
OutputStream os = socket.getOutputStream();
os.write("hello".getBytes());
socket.close();
}} 客户端代码为:public class ClientTest
{
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("127.0.0.1", 4000);
OutputStream os = socket.getOutputStream();
os.write("你好,服务器!".getBytes());
os.flush();
InputStream is = socket.getInputStream();
int len = 0;
byte[] buffer = new byte[1024];
String str = "";
while ((len = is.read(buffer, 0, buffer.length)) != -1)
{
str += new String(buffer, 0, len);
}
System.out.println("服务器发送数据为:" + str);
socket.close();
}}
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(4000);
Socket socket = ss.accept();
InputStream is = socket.getInputStream();
String str = "";
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer, 0, buffer.length)) != -1)
{
str += new String(buffer, 0, len);
}
System.out.println("客户端发送数据为:" + str);
OutputStream os = socket.getOutputStream();
os.write("hello".getBytes());
socket.close();
}} 客户端代码为:public class ClientTest
{
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("127.0.0.1", 4000);
OutputStream os = socket.getOutputStream();
os.write("你好,服务器!".getBytes());
os.flush();
InputStream is = socket.getInputStream();
int len = 0;
byte[] buffer = new byte[1024];
String str = "";
while ((len = is.read(buffer, 0, buffer.length)) != -1)
{
str += new String(buffer, 0, len);
}
System.out.println("服务器发送数据为:" + str);
socket.close();
}}
解决方案 »
- 密码正则表达式验证
- AWT的Graphics
- 在Ubuntu下安装jdk,配置路径失败,求助。。
- 菜鸟问题:那个如果要用JTextField来显示文本,该怎么用呢?急!!!!!
- 想做好这个就辞职,兄弟们帮看一下。
- 就这些分了,请问一台电脑要运行*.jar文件它至少要安装什么软件?谢谢 在线等
- 谁能给我解释一下?
- 为什么我每次必须要加-classpath 才能编译执行JAVA程序,这样设置classpath 有错吗(如下)
- 我正准备学习JAVA,不知如何。。。。。。。。。。。急!
- 請教一下~如何用Java applet讀入html文件並顯示出來?
- 是不是只能在finally从句里面去释放lock?
- 为什么这个椭圆Button在移动的时候椭圆背景会消失???代码如下,急救啊??
我也试过了,如果两边都是只读一次是没有问题的。我现在就是不知道为什么这么读就出问题了?
双方通信的时候设定协议数据前两个字节表示数据的长度,读的时候根据读到的长度去初始化这个的byte[]数组的大小。这样就可以满足你的需求。