标题:[求助]关于.net包的问题。
只看楼主
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
 问题点数:0 回复次数:2 
[求助]关于.net包的问题。

import java.net.*;
import java.io.*;
public class CSTest extends Thread
{

private Socket s;
public CSTest(Socket s)
{
this.s=s;
}
public void run()
{
try {
OutputStream os=s.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(os);
InputStream is=s.getInputStream();
bos.write("欢迎连接服务器!".getBytes());
byte[] buf=new byte[1024];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
bos.close();
is.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)
{
if(args.length>0)
server();
else
client();
}
public static void server()
{
try {
ServerSocket ss=new ServerSocket(6500);
while(true)
{
Socket s = ss.accept();
new CSTest(s).start();
}

}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void client()
{
try {
Socket s=new Socket(InetAddress.getByName(null),6500);
OutputStream os=s.getOutputStream();
InputStream is=s.getInputStream();
byte[] buf=new byte[1024];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
os.write("哈哈,狂放不羁想连接服务器".getBytes());
os.close();;
is.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}

}
}

打算做个简单网络聊天工具,今天看了一下.net包,写了个小练手程序,但是为什么不能运行呢?各位帮忙看看。









[此贴子已经被作者于2007-6-27 0:03:00编辑过]

搜索更多相关主题的帖子: private Socket public 服务器 import 
2007-06-27 00:01
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
得分:0 

这是因为你这句:


byte[] buf=new byte[1024];
int len=is.read(buf);


会导致阻赛,因为is一直都读不到1024字节的数据.
下面是我稍稍修改过的代码,可以从客服端输入信息,服务器将返回相同的信息,一直到客服端Say:"bye"

import java.net.*;
import java.io.*;
import java.util.*;
public class CSTest extends Thread
{

private Socket s;
public CSTest(Socket s)
{
this.s=s;
}
public void run()
{
try {
OutputStream os=s.getOutputStream();
BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
os.write(\"欢迎连接服务器!\n\".getBytes());
String line;
while(true){
line =br.readLine();
System.out.println(\"[\"+s+\"] say:\"+line);
os.write((line+\"\n\").getBytes());
if(line.equals(\"bye\")){
System.out.println(\"[\"+s+\"] disconnected!\");
break;
}
}
os.close();
br.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)
{
if(args.length>0)
server();
else
client();
}
public static void server()
{
try {
ServerSocket ss=new ServerSocket(6600);
while(true)
{
Socket s = ss.accept();
new CSTest(s).start();
}

}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void client()
{
try {
Socket s=new Socket(InetAddress.getByName(null),6600);
OutputStream os=s.getOutputStream();
BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(br.readLine());
String line;
Scanner scan =new Scanner(System.in);
while(true){
System.out.print(\">:\");
os.write((scan.nextLine()+\"\n\").getBytes());
line =br.readLine();
System.out.print(\"<:\"+line+\"\n\");
if(line.equals(\"bye\")) break;
}
os.close();;
br.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}

}
}


My BlogClick Me
2007-06-27 00:45
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
得分:0 

哦 哈哈,谢谢Eastsun老哥。。我看看。

2007-06-27 00:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-150608-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020482 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved