用java写了个简易的聊天工具
 但是只能在局域网里面使用  如何能够连接到外网

解决方案 »

  1.   

    你可以参考一下这个:连接到外网你知道把网址改一下就行了!
    服务器端:package test1.socket;import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;/**
     * 类说明:编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。
     * 服务器程序启动后,监听端口5678的请求;客户端程序启动后,向服务器端口5678发送请求。
     * 服务器不断接收客户机所写入的信息,并且服务器也会做出"Receive"为回应,告知客户机已接收到消息。
     * 要求:服务器程序采用多线程开发,允许多个客户端程序同时连接 。 客户机发送"End"字符串时,客户端程序退出。
     * (服务端程序和客户端程序分别命名为Server.java和Client.java)
     * 
     * @author 作者: LiuJunGuang
     * @version 创建时间:2011-4-6 下午11:08:23
     */
    public class Server implements Runnable {
    private ServerSocket ss = null; public Server() { } @Override
    public void run() {
    try {
    ss = new ServerSocket(5678);
    } catch (IOException e1) {
    e1.printStackTrace();
    }
    while (true) {
    try {
    Socket c = ss.accept();
    // 读取信息
    InputStream is = c.getInputStream();
    DataInputStream dis = new DataInputStream(is);
    String str = dis.readUTF();
    System.out.println("客户端发送的信息:" + str);
    // 相应信息
    OutputStream os = c.getOutputStream();
    DataOutputStream dos = new DataOutputStream(os);
    dos.writeUTF("Your write the words are :" + str);
    } catch (IOException e) {
    e.printStackTrace();
    }
    } } public static void main(String[] args) {
    Server s = new Server();
    Thread t = new Thread(s);
    t.start();
    }}客户端package test1.socket;import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.util.Scanner;/**
     * 类说明:编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。
     * 服务器程序启动后,监听端口5678的请求;客户端程序启动后,向服务器端口5678发送请求。
     * 服务器不断接收客户机所写入的信息,并且服务器也会做出"Receive"为回应,告知客户机已接收到消息。
     * 要求:服务器程序采用多线程开发,允许多个客户端程序同时连接 。 客户机发送"End"字符串时,客户端程序退出。
     * (服务端程序和客户端程序分别命名为Server.java和Client.java)
     * 
     * @author 作者: LiuJunGuang
     * @version 创建时间:2011-4-6 下午11:08:23
     */
    public class Client { public Client() {
    } public static void main(String[] args) {
    String word = "";
    InetAddress add = null;
    try {
    add = InetAddress.getByName("localhost");
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    while (!"End".equals(word.trim())) {
    Scanner scanner = new Scanner(System.in);
    word = scanner.nextLine();
    try {
    Socket s = new Socket(add, 5678);
    // 写入信息
    OutputStream os = s.getOutputStream();
    DataOutputStream dos = new DataOutputStream(os);
    dos.writeUTF(word); // 读取信息
    InputStream is = s.getInputStream();
    DataInputStream dis = new DataInputStream(is);
    System.out.println(dis.readUTF());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }}
      

  2.   


    只要有对方的IP就行了 可以用数据包发送给多个IP
      

  3.   

    你好   我是在学校的网络   我上次写了一个客户端的代码 
     然后让我的外地的同学通过windows 自带的 telnet 程序来 连接我的电脑   可是不行
     是不是因为我用的是虚拟ip  这样 他没有办法找到我的机器 
     就无法连接了  那我要怎么知道我真实的ip   是不是在设置地址的时候我设置的是自己的真实ip 就可以了
      但是 我上次上网查了自己的真实的ip  但是   我朋友还是连不上  这是为什么 
      

  4.   

    学校里面就别想了,大家都是共用一个真实IP的,管理员也不会把对那个真实IP的访问映射到你的本机学校一般是通过代理上的