java 网络通信-我做了一个socket通信程序,服务器是server,用户是client

问题描述

我做了一个socket通信程序,服务器是server,用户是client

但是我同学运行用户程序,我运行服务器程序,却连接不上,为什么呢?具体代码如下

服务器程序:
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Text1 extends Thread
{
private Socket serversocket=null;
int i=0;
public Text1(Socket socket)
{
this.serversocket=socket;
}
public void run()
{

    try
    {

        final Socket socket=serversocket;
        final BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        final PrintWriter out = new PrintWriter(socket.getOutputStream());
        final BufferedReader sin=new BufferedReader(new  InputStreamReader(System.in));

        JFrame jf=new JFrame("这是服务器,正在与客户"+i+"对话");
        Container container=jf.getContentPane();
        jf.setVisible(true);   //设置窗体为可视
        jf.setLayout(null);  //窗体布局为网格
        jf.setSize(400,450);
        jf.setLocation(200,100 );
        jf.setBackground(Color.BLUE);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JTextArea a=new JTextArea("");
        container.add(a);
        a.setBounds(0, 0, 385, 360);
        a.setBackground(Color.ORANGE);
        JTextField b=new JTextField("");
        container.add(b);
        b.setBounds(0,360, 385, 50);
        b.setBackground(Color.PINK);
        b.addActionListener(new ActionListener()
        {
    public void actionPerformed(ActionEvent e)
    {
        String s=b.getText();
        out.println(s);
        out.flush();
        a.append("
");
        a.append("您自己:    "+s);
        if(s=="bye")
        {
            try
            {
                out.close();
                in.close();
                socket.close();
            }
            catch(Exception e1)
            {}
        }
    }
    });

        String str=null;

        while(str!="bye")
        {
            try
            {
                str=in.readLine();
            }
            catch(Exception e1)
            {}
            a.append("
");
            a.append("来自客户:    "+str);
        }

         a.setText("对话结束!");
         try
            {
                in.close();
                out.close();
                socket.close();

            }
            catch(Exception e1)
            {}
    }
    catch(Exception e)
    {}
    }

public static void main(String args[]) throws IOException
{
    ServerSocket server=null;
    boolean Listening=true;
    try
    {
        server=new ServerSocket(9999);
    }
    catch(IOException e)
    {}
    while(Listening)
    {
        new Text1(server.accept()).start();
    }

}

}
用户程序:
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;

import javax.swing.JFrame;

import javax.swing.*;
import javax.swing.WindowConstants;

public class MyClient extends JFrame{
public static void main (String args[]) throws IOException
{
Socket socket=new Socket("59.46.65.121",9999);
final PrintWriter out=new PrintWriter(socket.getOutputStream());
final BufferedReader in=new BufferedReader(new InputStreamReader (socket.getInputStream()));
final BufferedReader sin =new BufferedReader(new InputStreamReader (System.in));

    JFrame jf=new JFrame("这是用户02,正在与服务器对话");
    Container container=jf.getContentPane();
    jf.setVisible(true);   //设置窗体为可视
    jf.setLayout(null);  //窗体布局为网格
    jf.setSize(400,450);
    jf.setLocation(200,100 );
    jf.setBackground(Color.BLUE);
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    JTextArea a=new JTextArea("");
    container.add(a);
    a.setBounds(0, 0, 385, 360);
    a.setBackground(Color.ORANGE);
    JTextField b=new JTextField("");
    container.add(b);
    b.setBounds(0,360, 385, 50);
    b.setBackground(Color.PINK);
    b.addActionListener(new ActionListener()
            {
        public void actionPerformed(ActionEvent e)
        {
            String s=b.getText();
            out.println(s);
            out.flush();
            a.append("
");
            a.append("您自己:    "+s);
            if(s=="bye")
            {
                try
                {
                    out.close();
                    in.close();
                    socket.close();
                }
                catch(Exception e1)
                {}
            }
        }
        });

   String str=null;

    while(str!="bye")
    {
        try
        {
            str=in.readLine();
        }
        catch(Exception e1)
        {}
        a.append("
");
        a.append("来自服务器:    "+str);
    }

     a.setText("对话结束!");
     try
        {
            in.close();
            out.close();
            socket.close();

        }
        catch(Exception e1)
        {}  

}

}

解决方案

java socket:一个Server对应多个Client

解决方案二:

楼主这个问题解决没有?哦我现在也遇到了这个问题,求赐教!

解决方案三:

你的服务端根本就没有用accept去接受客户端socket

解决方案四:

不写注释 真的不是个好习惯

时间: 2024-08-01 01:17:05

java 网络通信-我做了一个socket通信程序,服务器是server,用户是client的相关文章

【网络编程5】Java与Python套接字Socket通信的例子

今天看一本Python黑客相关的书的第一章部分,边看边在Linux Ubuntu Kylin 32位系统的终端打Python代码,就基本会用Python语言了,包括socket内容.刚好我之前学习Java Socket通信,今天就试着用Python写客户端,并与Java服务器端通信,经过一些调试,最后成功了.Github根链接是:https://github.com/1040003585/javanettextbook/tree/master/Java_Python --惠州学院13网络工程 吴

我做的一个SOCKET试验,奇怪了!

问题描述 我做了一个socket客户端,使用connect指定ip和端口可以连接上,那在服务端ip改变了,就不行,怎么样通过客户端动态获取服务端的ip地址,然后返回给客户端,然后连接?c#做的!请指教

问题-刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下

问题描述 刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下 刚开始学习java ,自己写了一个聊天小程序,没有报任何错误.测试时打开3个聊天小窗口 A,B,C,在A中输入文字,只在B中显示出来了,而且显示出了三句相同语句.查了好几个小时都没有查出来,希望高手能帮帮忙,看看是怎么回事,并且告诉我是通过什么方法找出来的. 以下是客户端和服务器端代码 客户端: import java.awt.*; import java.awt.event.*; import java

使用javascript做的一个随机点名程序

 这篇文章主要介绍了使用javascript做的一个随机点名程序,经测试,效果相当不错,需要的朋友可以参考下  代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-

java 使用线程做的一个简单的ATM存取款实例代码_java

实现Runnable接口.当一个线程已继承了另一个类时,就只能用实现Runnable接口的方法来创建线程,且便于保持程序风格的一致性. 我们知道,一个具有生命的线程,具有下面五种状态: 创建状态 使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread) 可运行状态 使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状态(Runnable) 运行中状态 Java运行系统通过调度选中一个Run

socket通信程序

问题描述 本人刚到公司实习的小白java还在学习当中现在公司让我做一个与设备smart200的通讯程序!!!我是真心不了解啊,救助各位大神帮帮我啊!~!~!~ 解决方案 解决方案二:最近也在做socket通信,你自己写一个服务端再写一个客户端,能让他们之间进行通信就可以了,和其他设备通信也是一样的道理解决方案三:我最近也在做SOCKET通信,不过是MFC和C#的,...慢慢来吧,我刚开始连帧是什么都不知道,通信协议一点也不了解,都是一点一点看会的,加上问别人学的解决方案四:java的MINA框架

安卓手机socket通信(服务器和客户端)_Android

本文实例为大家分享了安卓手机socket通信代码,供大家参考,具体内容如下 1.socket通信首先要定义好服务端的ip地址和端口号:  (1).首先看服务端的代码: package com.example.androidsockettest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import

安卓手机socket通信(服务器和客户端)

本文实例为大家分享了安卓手机socket通信代码,供大家参考,具体内容如下 1.socket通信首先要定义好服务端的ip地址和端口号: (1).首先看服务端的代码: package com.example.androidsockettest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import

用Delphi编写Socket通信程序

笔者在工作中遇到对局域网中各工作站与服务器之间进行Socket通信的问题.现在将本人总结出来的TServerSocket和TClientSocket两个组件的基本用法写出来,希望与您分享. ClientSocket组件为客户端组件.它是通信的请求方,也就是说,它是主动地与服务器端建立连接. ServerSocket组件为服务器端组件.它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复. ServerSocket组件可以同时接受一个或多个ClientSocke