0 0

各位大神好,小弟有个关于Java网络编程的基本问题想要咨询10

  小弟正准备上大二,不是学计算机或软件的,Java就上过几节选修课,所以发邮件问老师也不理我,于是来寻求各位大神的帮助。
  以下是一个即时通信的程序,在客户端在自己的电脑中(即点击ChatClient的Link按钮后输入127.0.0.1)时可以工作。但是把客户端给别人,自己打开ChatServer,客户端输入我的IP地址时总是显示连接失败。不知各位大神有何指点。
这是服务端
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
public class ChatServer extends Frame implements ActionListener{
TextArea ta=new TextArea();
TextField tf=new TextField(30);
Button b=new Button("Send");
Panel p=new Panel();
ServerSocket ss;
Socket s;
DataInputStream dis;
DataOutputStream dos;
void lanchWindow(){
b.addActionListener(this);
ta.setEditable(false);
p.add(tf);
p.add(b);
this.add(ta,"Center");
this.add(p,"South");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
try{
dis.close();
dos.close();
ss.close();
s.close();
}catch(Exception ec){

}

}
});
this.setBounds(300,300,500,300);
this.setVisible(true);
this.setTitle("Server");
}
public void actionPerformed(ActionEvent e){
String s=tf.getText();
ta.append(s+"\n");
tf.setText(" ");
try{
dos.writeUTF(s);

}catch(Exception ex){

}

}
public static void main(String arg[]){
ChatServer cs=new ChatServer();
cs.lanchWindow();
try{
cs.ss=new ServerSocket(8888);
cs.s=cs.ss.accept();
while(true){
cs.dis=new DataInputStream(cs.s.getInputStream());
cs.dos=new DataOutputStream(cs.s.getOutputStream());
cs.ta.append("Client say: "+cs.dis.readUTF()+"\n");
}
}catch(Exception e){

}
}

}
这是客户端
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class ChatClient extends Frame implements ActionListener{
TextArea ta=new TextArea();
TextField tf=new TextField(30);
Button b=new Button("Send");
Button b2=new Button("Link");
Panel p=new Panel();
Socket s;
DataInputStream dis;
DataOutputStream dos;
boolean connected=false;
void lanchWindow(){
b.addActionListener(this);
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String inputValue = JOptionPane.showInputDialog("Please input the Server ID");
ChatClient.this.connect(inputValue);
ChatClient.this.connected=true;
}
});
ta.setEditable(false);
p.add(tf);
p.add(b);
p.add(b2);
this.add(ta,"Center");
this.add(p,"South");
this.setBounds(300,300,500,300);
this.setVisible(true);
this.setTitle("Client");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
ChatClient.this.disconnect();
System.exit(0);
}
});
}
void connect(String str){
try{
s=new Socket(str,8888);
dos=new DataOutputStream(s.getOutputStream());
dis=new DataInputStream(s.getInputStream());
ta.append("Succeed Connect: "+str+"\n");
dos.writeUTF("A Client In");
}catch(Exception e1){
JOptionPane.showMessageDialog(null, "The Server Off", "Sorry", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}

}
void disconnect(){
try{
dos.close();
dis.close();
s.close();
}catch(Exception e2){

}

}
public void actionPerformed(ActionEvent e){
String s=tf.getText();
ta.append(tf.getText()+"\n");
tf.setText("");
try{
dos.writeUTF(s);
}catch(Exception e3){

}
}
public static void main(String arg[]){
ChatClient cc=new ChatClient();
cc.lanchWindow();
try{
while(cc.connected){
cc.ta.append("The Server say: "+cc.dis.readUTF()+"\n");
}
}catch(Exception e){


}
}
}
2014年9月12日 10:57

3个答案 按时间排序 按投票排序

0 0

不在同一网络下面,你和朋友的是同一网关下的比如同一个路由器或者分流器可以通信。好好学习TCP/IP吧

2014年9月16日 11:09
0 0

在一台机子可以,两台机子不行的话,主要是IP地址的问题.你的服务器没在公网上,别人无法访问的

2014年9月12日 16:08
0 0

程序本身没有问题,简单测试了一下能够work
在client机器上telnet试一下能否访问server的8888端口

2014年9月12日 13:53

相关推荐

    java网络编程英文高清完整第四版.pdf下载

    前几天看到公司一个大神看技术文档,打眼瞟了一下,全是英文的表示直接看看不到。但是大神不一样,人家是硕士哦,英文杠杠的,但是自己心里也想看...java网络编程第四版 java_concurrency_in_practice.pdf Java并发实践

    Java编程开发培训视频教程(小白到大神)

    Java编程开发培训视频教程(小白到大神) Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为...

    27天成为Java大神

    在“27天成为Java大神”的学习计划中,你将深入探索Java这门强大且广泛应用的编程语言。Java以其跨平台、面向对象和高效性等特点,在软件开发领域占据着重要地位。以下是一些关键的知识点,它们是成为Java大神的...

    java编程宝贝之ant大神

    Java编程中的Ant是一个重要的构建工具,它在Java开发领域扮演着不可或缺的角色。Ant以其灵活性、可配置性和自动化能力,使得项目构建过程变得高效且易于管理。Ant是Apache软件基金会的一个项目,因此它开源且免费,...

    27天成为Java大神之Day02

    在"27天成为Java大神之Day02"的学习旅程中,我们开始深入Java的世界。这个阶段,我们将重点理解Java的基础概念,为后续的高级主题打下坚实的基础。Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现...

    关于27天成为Java大神

    在IT行业中,Java是一种广泛应用的编程语言,尤其在后端开发领域占据主导地位。"27天成为Java大神"的计划旨在通过高效的学习路径,帮助初学者在短时间内掌握Java的核心概念和技术。以下是对这个学习过程中的关键知识...

    27天成为Java大神之Day01

    在Java学习的旅程中,第一天通常是打基础的关键时刻。"27天成为Java大神之Day01"的课程设计旨在快速引导初学...请持续关注后续的更新,以获取更高级的Java知识,如集合框架、多线程、网络编程等,逐步成长为Java大神。

    JAVA程序设计教程第2版.pdf

    概述:本资源是一个关于 JAVA 编程的教程,旨在帮助初学者快速掌握 JAVA 编程语言。下面将对该资源的标题、描述、标签和部分内容进行详细解释,并生成相关的知识点。 一、标题:JAVA 程序设计教程第2版.pdf 该标题...

    java小游戏项目(求大神找bug).zip

    java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip...

    Java并发编程-Doug Lea

    Java并发编程原汁原味英文版,Doug Lea大神经典著作, 内容:Concurrency Models, design forces, Java Designing objects for concurrency Immutability, locking, state dependence, containment, splitting ...

    Java Swing大神必经之路

    Java Swing大神必经之路 Java Swing 是 Java 语言中的一個圖形用戶界面(GUI)工具包,提供了一個功能強大且灵活的方式來創建圖形用戶界面應用程序。本資源匯總了 Java Swing 的各個方面,包括组件、事件、布局、...

    java大神进阶之路.pdf

    Java大神进阶之路是一份针对Java开发者进阶提升的学习指南,详细描述了从编程基础到Java语言本身的精通,再到数据库以及Java Web核心技术的掌握,以及每个阶段所需要学习和掌握的知识点。文中特别强调了数据结构和...

    Java集合框架的基本接口.zip

    java小白从如何成长为大神,java基础教程java小白从如何成长为大神,java基础教程java小白从如何成长为大神,java基础教程java小白从如何成长为大神,java基础教程java小白从如何成长为大神,java基础教程java小白从...

    Java拼图大神级小游戏4.rar

    1. **Java基础**:首先,你需要对Java编程语言有基本的了解,包括语法、数据类型、控制结构等。这是构建任何Java应用的基础。 2. **Swing框架**:Java Swing是用于构建图形用户界面(GUI)的库。在这个项目中,...

    27天成为Java大神一个基于浏览器端

    标题中的“27天成为Java大神一个基于浏览器端”似乎是一个快速学习Java的课程或者教程,强调在较短时间内通过在线方式掌握Java编程。然而,描述中提到了"python编程",这与标题中的Java有所冲突,可能是描述错误或者...

    Java面试必问题大神必经之路

    Java面试是评估程序员技能的关键环节,对于追求成为Java大神的人来说,掌握一系列核心知识点至关重要。以下是一些在Java面试中经常出现的问题和相关知识点的详细解释: 1. **Spring框架**: - **版本功能**:...

    java模拟网络通信

    在Java编程语言中,模拟网络通信是一个常见的任务,特别是在学习计算机网络原理或开发分布式系统时。这个场景描述了如何使用Java来实现两个程序之间的通信,就像位于不同地理位置的计算机一样,尽管在这里它们可能都...

    源码(523集小白到大神)

    标题 "源码(523集小白到大神)" 暗示这是一套全面的Java编程教学资源,共计523集,旨在帮助初学者从零基础成长为熟练掌握Java的大神。这个系列可能涵盖了从基本语法到高级概念的所有内容,通过实际的源代码学习,使...

    JAVA基础入门教程100节(小白变大神必学)

    这个"JAVA基础入门教程100节(小白变大神必学)"涵盖了从零开始学习Java的所有基础知识,旨在帮助初学者逐步掌握这门强大的编程语言。 在Java的世界里,首要的知识点是了解它的历史和特性。Java由詹姆斯·高斯林于...

Global site tag (gtag.js) - Google Analytics