我做了一个登陆界面ServerDemo类
然后有另外一个ServerDemo_Socket类,有一个services()方法
在登陆之后,点击【启动服务】的时候点击启动的时候,是执行了
{
ServerDemo_Sockets=new ServerDemo_Socket();
s.services();
}
程序就死了~~菜单之类的都不能点了,而且程序也关不了因为我是个新手,对这些也不是很了解,所以想问下~~下面是ServerDemo_Sockets的代码是
import javax.swing.*;
import java.io.*
import java.net.*
import javax.swing.JOptionPane;
public class ServerDemo_Socket {
public boolean iscurrentUser(String loginmessage){
String getString=loginmessage;
String s1;
String s2;
int i=loginmessage.indexOf(",");
s1=loginmessage.substring(0, i-1);
s2=loginmessage.substring(i+1, loginmessage.length());
System.out.println("客户端登陆用户名称为:"+s1);
System.out.println("客户端登陆用户密码为"+s2);
return true;
}//iscurrentUser()这个方法没有写完,这个是用来处理loginmessage,把他拆分为用户名和密码的,然后判断是否是合法用户
public void services(){
try{
DatagramSocket socketServer=new DatagramSocket(4242);
byte[] buf=new byte[1000];
DatagramPacket receivePacket=new DatagramPacket(buf,buf.length);
DatagramPacket sendPacket;
System.out.println("服务启动成功");
while(true){
socketServer.receive(receivePacket);
String clientAddress=receivePacket.getAddress().toString();
int clientPort=receivePacket.getPort();
System.out.println("来自客户端:"+clientAddress+"端口:"+clientPort+"连接");
String message=new String(receivePacket.getData(),0,receivePacket.getLength());
System.out.println("内容为:"+message);
if(iscurrentUser(message)){
buf="true".getBytes();
sendPacket=new DatagramPacket(buf,5,InetAddress.getByName(clientAddress),clientPort);
socketServer.send(sendPacket);//11111111
}else{
buf="false".getBytes();
sendPacket=new DatagramPacket(buf,5,InetAddress.getByName(clientAddress),clientPort);
socketServer.send(sendPacket);//22222222
}
}//我的想法是通过iscurrentUser(String loginmessage)判断客户端传来的message,然后判断是否是合法用户,如果分别用标号为1或者2的语句回传一个结果,然后客户端根据这个回传的值,来提示登陆是否成功;
}catch(SocketException se){
System.out.println(se);
}catch(IOException ioe){
System.out.println(ioe);
}
}
public static void main(String[] args){
ServerDemo_Socket ss=new ServerDemo_Socket();
ss.services();
}
}
这个是不是要用到多线程才行啊??还是我哪个地方错了??
我调用这个方法的时候 程序就死了
大哥大姐们 指导一下小弟啊,或者给个好点的思路,别整太深奥的