这么长!你也不把异常列出来!
调试的时候扑捉并显示一些异常吧!socketserver最好在一个单独的线程舰听连接!!
调试的时候扑捉并显示一些异常吧!socketserver最好在一个单独的线程舰听连接!!
解决方案 »
- java.lang.NoSuchMethodException
- 请教排序问题,谢谢
- 用正则怎么表示这个字串<meta http-equiv="content-type" content="text/html; charset=utf-8">
- 用TCP传输文件
- 有谁用过synthetica吗?
- 请问一下程序有时候 a1运行不出来 ,还有怎么修改避免重复? if语句有问题吗?
- 刚学java从网上下载了个ftp类库包,不知道怎么用?
- 我的applet从application转过来!如何发布!
- 我在JBotton中怎么关闭本JFram?---请高手指教,最好给个代码!
- 求解Java中观察者模式的实际运用
- jbuilder开发中遇到的问题. 好几个.
- 一个包中的多个类
java.lang.NullPointerException:
at DrawWindow.senddata<ServerWindow.java:91>
at MouseAdpt.mouseClicked<ServerWindow.java:91>
at java.awt.Component.processMouseEvevt<Component.java:3129>
at java.awt.Component.processEvevt<Component.java:2965>
at java.awt.Component.dispatchEventImpl<Compiled Code>
at java.awt.Component.dispatchEvent<Compiled Code>
at java.awt.EventQueue.dispatchEvent<Compiled Code>
at java.awt.EventDispatchThread.run<EventDispatchThread.java:68>
java.lang.NullPointerException:
at DrawWindow.senddata(ServerWindow.java:91)
at MouseAdpt.mouseClicked(ServerWindow.java:193)
at java.awt.Component.processMouseEvent(Component.java:3129)
at java.awt.Component.processEvent(Component.java:2965)
at java.awt.Component.dispatchEventImpl(Compiled Code)
at java.awt.Component.dispatchEvent(Compiled Code)
at java.awt.EventQueue.dispatchEvent(Compiled Code)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:68)
java.lang.NullPointerException:
at DrawWindow.senddata(ServerWindow.java:91)
at MouseAdpt.mouseClicked(ServerWindow.java:193)
at java.awt.Component.processMouseEvent(Component.java:3129)
at java.awt.Component.processEvent(Component.java:2965)
at java.awt.Component.dispatchEventImpl(Compiled Code)
at java.awt.Component.dispatchEvent(Compiled Code)
at java.awt.EventQueue.dispatchEvent(Compiled Code)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:68)
catch(IOException ex){}
1。这个程序本来要传两个数据,即postion矩阵中的行和列值,
但由于连接不上,所以我先将yy=10,之传yx的值。
2。…………我也没什么说的了
总觉得哪里不对,可是小弟确实水平有限,实在看不出来了。
ss=new Socket("192.168.0.55",8888);
try{
while (true){
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
myThread mt=new myThread(this);
mt.start();
}
}catch(Exception e){
}
return true;
}return true 而你的返回类型是void
我的程序编译没错误,上面的错误可能是我在调试时发的帖子,没改正吧!
//server:import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;public class ServerWindow extends Frame{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); ServerWindow(){
super("服务器");
setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(600,500);
setVisible(true);
addWindowListener(new closeWin());
try{
d.connect(); }catch (Exception e){}
} public static void main(String[] args){
new ServerWindow(); }
}
//************************************************
class DrawWindow extends Canvas{
int postion[][]=new int[20][20];
public int yx=10,yy=10;
DataInputStream dis;
DataOutputStream dos;
ServerSocket s;
Socket ss; //构造函数
DrawWindow(){
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????
public void connect()throws Exception
{
System.out.println("开始鉴听");
s=new ServerSocket(18888);
ss=s.accept();
System.out.println("接收到"); try
{
//while (true)这儿出错了!!!!!!!!!!!
{ dis=new DataInputStream(ss.getInputStream());
dos=new DataOutputStream(ss.getOutputStream());
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
}
}catch(Exception e){} }
//?????????????????????????????????????
public void senddata(int x){
try{
dos.writeInt(x);
dos.flush();
}catch (Exception e){}
}
public int getdata(){
int t=0;
try
{t=dis.readInt();
}catch (Exception e){}
return t;
}
//画棋盘和棋子
public void paint(Graphics g){
int i,j,x,y;
//画棋盘格
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20); }
//画棋子
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//***********************************************
class myThread extends Thread{
DrawWindow pp;
myThread(DrawWindow p){
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.getdata();//读客户端的坐标 if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落白子
{
pp.postion[pp.yx-1][pp.yy-1]=2;
pp.repaint(0,0,500,500);
}
}
}
};
//*********************************************
//*********************************************
class closeWin extends WindowAdapter{ public void windowClosing(WindowEvent e){
Frame frm=(Frame)(e.getSource());
frm.dispose();
System.exit(0);
}
}
//**************************************
class MouseAdpt extends MouseAdapter{
DrawWindow pp; MouseAdpt(DrawWindow p){
pp=p;
} public void mouseClicked(MouseEvent e){
int x=0,y=0;
//将鼠标点击的坐标赋给 x,y
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
else if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
else if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
else if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
//如果点在棋盘内
if (x>0&x<=20&y>0&y<=20){
//将棋子标上黑色,重画棋盘 //如果没有棋子,落黑子
if (pp.postion[x-1][y-1]==0){
pp.postion[x-1][y-1]=1;
pp.repaint(0,0,500,500);
pp.senddata(x);
}
}
}
}
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}有问题发短信,欢迎加分:(
看看网络是不是通的.
netstat -a
看看没有没开8888telnet 192.168.0.55 8888
看看有没有反应.....
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}
我把客户端改applet为Frame,好测试。
有问题发短信,欢迎加分:(
//?????????????????????????
public void connect()throws Exception{
s=new ServerSocket(8888);
ss=s.accept();
try{
while (true){
dis=new DataInputStream(ss.getInputStream());
dos=new DataOutputStream(ss.getOutputStream());
myThread mt=new myThread(this);
mt.start();
}
}catch(Exception e){}
}
觉得有问题的地方一定要把异常打出来,最差的就是catch异常后什么都不干,纵容异常!
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}
我把客户端改applet为Frame,好测试。
有问题发短信,欢迎加分:(
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}
我把客户端改applet为Frame,好测试。
有问题发短信,欢迎加分:(
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}
我把客户端改applet为Frame,好测试。
有问题发短信,欢迎加分:(
逻辑出错?
能具体的说说吗?
谢谢!!
public void connect()throws Exception
{
System.out.println("开始鉴听");
s=new ServerSocket(18888);
try
{
while (true)
{
ss=s.accept();
System.out.println("接收到"); dis=new DataInputStream(ss.getInputStream());
dos=new DataOutputStream(ss.getOutputStream());
myThread mt=new myThread(this);
mt.start();
}
}catch(Exception e){}... }
你必须要把socket的监听放到一个无限循环里,否则,只监听了一次,那么以后的信息当燃收不到罗:)
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;//******************************************class SocketWindow extends Frame
{
DrawWindow d=new DrawWindow();
TextField c=new TextField("fuwuqi"); public SocketWindow()
{
init();
}
public void init()
{ setLayout(new FlowLayout());
add(d);
add(c);
d.requestFocus();
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
try{
d.connect();
}catch (Exception e){} }}
//************************************************
class DrawWindow extends Canvas
{
public int mx,my,yx,yy=10;
public final static int PORT=8888;
int postion[][]=new int[20][20];
DataInputStream is;
DataOutputStream os;
Socket ss; DrawWindow()
{
addMouseListener(new MouseAdpt(this));
setSize(440,440);
setBackground(Color.orange);
setVisible(true);
}
//我觉得就是这段程序不对,可是不知哪不对?
//?????????????????????????????????????????????
void connect()throws Exception
{
ss=new Socket("192.168.0.151",18888);
if(ss != null)
{
System.out.println("成功连接");
is=new DataInputStream(ss.getInputStream());
os=new DataOutputStream(ss.getOutputStream());
try
{
// while (true) //while (true)这儿出错了!!!!!!!!!!!
{
Thread.sleep(300);
myThread mt=new myThread(this);
mt.start();
} }catch(Exception e)
{
}
}
return;
}
//?????????????????????????????????????????????????????????????
public int readdata(){
int t=0;
try{
t=is.readInt();
}catch (Exception e){}
return t;
} public void writedata(int t)
{
try
{
os.writeInt(t);
// os.flush();
System.out.println("写数据");
}
catch (Exception e){}
} public void paint(Graphics g){
int i,j,x,y;
for (i=1;i<=19;i++)
for (j=1;j<=19;j++){
g.setColor(Color.black);
g.drawRect(20*i,20*j,20,20);
}
for (x=1;x<=20;x++)
for (y=1;y<=20;y++){
if (postion[x-1][y-1]==2){
g.setColor(Color.white);
g.fillOval(20*x-10,20*y-10,20,20);
}
if (postion[x-1][y-1]==1){
g.setColor(Color.black);
g.fillOval(20*x-10,20*y-10,20,20);
}
}
}
}
//*********************
class myThread extends Thread
{
DrawWindow pp; myThread(DrawWindow p)
{
pp=p;
}
public void run()
{
while(true)
{
pp.yx=pp.readdata();//读服务器端的坐标
if (pp.postion[pp.yx-1][pp.yy-1]==0)//如果该位置无棋子,落黑子
{
pp.postion[pp.yx-1][pp.yy-1]=1;
pp.repaint(0,0,500,500);
}
}
}
}//***********************************
class MouseAdpt extends MouseAdapter
{
DrawWindow pp;
MouseAdpt(DrawWindow p)
{
pp=p;
}
public void mouseClicked(MouseEvent e){
int x=0,y=0;
if (e.getX()%20<10 && e.getY()%20<10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20>=10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
}
if (e.getX()%20>=10 && e.getY()%20<10){
x=(e.getX()+e.getX()%20)/20;
y=(e.getY()-e.getY()%20)/20;
}
if (e.getX()%20<10 && e.getY()%20>=10){
x=(e.getX()-e.getX()%20)/20;
y=(e.getY()+e.getY()%20)/20;
} if (x>0&x<=20&y>0&y<=20){
if (pp.postion[x-1][y-1]==0){
pp.repaint(0,0,500,500);
pp.postion[x-1][y-1]=2;
}
System.out.println("准备发送");
pp.writedata(x); }
}
public static void main(String[] args){
new SocketWindow(); }
}
我把客户端改applet为Frame,好测试。
有问题发短信,欢迎加分:(
注意,是每次!所以应用多线程可以多用户连接,而我的是单用户,所以
………………………………………………………………
注意,是每次!所以应用多线程可以多用户连接,而我的是单用户,所以
………………………………………………………………
如果是多用户与服务器相连参与游戏,当然需要监听到多个SOCKET,我
刚才就想成这种情况了。
你要不要我给你开帖送分赔不是啊?
如果是多用户与服务器相连参与游戏,当然需要监听到多个SOCKET,我
刚才就想成这种情况了。
你要不要我给你开帖送分赔不是啊?
如果是多用户与服务器相连参与游戏,当然需要监听到多个SOCKET,我
刚才就想成这种情况了。
你要不要我给你开帖送分赔不是啊?
呵呵,谁叫你这么问人家?
我如果要那人家的程序交作业,
那还用等到交作业的头一天才……,呵呵。
还有,我们学校的破网慢,
等我发一个贴子时,你们已经跑了好几楼了。
你发了大概有7个程序吧,好象都一样,是不是啊??我没细看!CSDN发消息是越来越糟烂了。
郁闷
你发的大概有7段程序,是不是都一样的?没细看!:)CSDN发帖子、回帖子是越来越难了
sigh~~