下面TCPsocket通信问题的代码存在哪些问题

问题描述

下面TCPsocket通信问题的代码存在哪些问题

package com.gp.Socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatTTCPServer {
public ChatTTCPServer(int port,String name) throws IOException{
ServerSocket server=new ServerSocket(port);
Socket client=server.accept();
new ChatTTCPSocketJFrame(name,client);
server.close();
}
public static void main(String[] args) throws IOException
{
new ChatTTCPServer(9999,"Jack");
}

}
package com.gp.Socket;

import java.awt.HeadlessException;
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.InetAddress;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;

public class ChatTTCPSocketJFrame extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private JTextArea text_receiver;
private JTextField text_sender;
private PrintWriter cout;
private JButton buttons[];
public ChatTTCPSocketJFrame(String name ,Socket socket) throws HeadlessException, IOException{
super("聊天室"+name+""+InetAddress.getLocalHost()+":"+socket.getPort());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.text_receiver=new JTextArea();
this.text_receiver.setEditable(false);
this.getContentPane().add(new JScrollPane(this.text_receiver));
JToolBar toolBar = new JToolBar();
this.getContentPane().add(toolBar,"South");
toolBar.add(this.text_sender=new JTextField(30));
String[] buttonstr={"发送","离线"};
buttons=new JButton[buttonstr.length];
for(int i=0;i<buttonstr.length;i++){
toolBar.add(buttons[i]=new JButton(buttonstr[i]));
buttons[i].addActionListener(this);
}
this.setVisible(true);
this.name=name;
this.cout=new PrintWriter(socket.getOutputStream(),true);
this.cout.println(name);
BufferedReader br =new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line="连接"+br.readLine()+"成功";
while(line!=null&&!line.endsWith("bye"));
{
text_receiver.append(line+"rn");
line=br.readLine();
}
br.close();
this.cout.close();
socket.close();
buttons[0].setEnabled(false);
buttons[1].setEnabled(false);
}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("发送"));
    {
        this.cout.println(name+"说"+text_sender.getText());
        text_receiver.append("我说: "+text_sender.getText()+"n");
        text_sender.setText("");
    }
    if(e.getActionCommand().equals("离线")){
        text_receiver.append("离线");
        this.cout.println(name+"离线n"+"byen");
        buttons[0].setEnabled(false);
        buttons[1].setEnabled(false);
    }
}

public static void main(String[] args) throws IOException {
    new ChatTTCPSocketJFrame("Mike","localhost",9999);
}
public ChatTTCPSocketJFrame (String name,String host,int port) throws IOException {
    this(name,new Socket(host,port));
}

}
不知道为什么不能进行通信 新手求帮助

解决方案

用sniffer调试下,看看数据包有没有发出去。

时间: 2024-11-16 03:55:25

下面TCPsocket通信问题的代码存在哪些问题的相关文章

TCPsocket通信的简单实现

问题描述 TCPsocket通信的简单实现 package com.gp.Socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ChatTTCPServer { public ChatTTCPServer(int port,String name) throws IOException{ ServerSocket server=new Serve

Mina 2 编码解码协议 及 已经实现通信的完整代码

使用mina2通信的完整代码朋友们可以去http://download.csdn.net/detail/u013378306/8756861下载 下面只对编解码协议进行解释 package lhy.charest; import java.nio.ByteOrder; import java.nio.charset.Charset; import lhy.client_domain.MsgPack; import org.apache.mina.core.buffer.IoBuffer; imp

Android AIDL实现跨进程通信的示例代码

AIDL是Android接口定义语言,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能. 实现步骤 例:用 A程序去访问 B程序的MyService.java服务 在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里写我们的接口方法 在MyService中写AIDL文件定义的方法的具体服务逻辑 在B的manifest文件中,为Service添加action "com.xyb.servicetest.

Java实现的基于socket通信的实例代码_java

服务器端代码: 复制代码 代码如下: import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;  public class Server {     public static void main(String[] args) {         ServerSocket server;         try{   

php与java通过socket通信的实现代码_php实例

demo实现的简单功能是,接受PHP端写入的字符串,然后原样返回给输出端.代码如下: 复制代码 代码如下: import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException{   System.out.println("Server started !\n");   ServerSocket server=new Ser

用UDP协议实现广播通信

UDP 是USER DATAGRAM PROTOCAL 的简称,是一种在网络上提供的无连接的传输协议. 用UDP通信有以下特点: 1. 数据传输不用建立连接,所以不可靠: 2. 数据的发送是面向整个网络的,任何一台在局域网内的计算机都可以接收到相同的数据: 具体实现很简单,但是现在在网络上很少看到这方面的代码:我也参考了VCKBASE上的关于UDP通信的原代码和一些书籍,写了这个简单的客户端,接收端程序,起到抛砖引玉的作用,希望能给初次接触UDP之BROADCAST编程的同志一些参考. 下面就让

Socket网络编程(3)--两端通信

 上篇博文:http://www.cnblogs.com/wolf-sun/p/3329558.html      介绍了客户端连接服务端,一对一,多对一的情况,下面实现服务器接收消息的功能.LZ这些弄的比较慢,也是边学习,边动手实现的.具体步骤在注释中写的比较清楚,不懂的可以留言,LZ会尽快回复.共同学习,共同进步. 接收消息时机       什么时候接收消息?当服务器开始监听,有客户端连接,并且连接成功,此时负责通信的Socket已经创建,此时就可以接收消息了,可以通过Socket的Rece

浅析iOS应用开发中线程间的通信与线程安全问题_IOS

线程间的通信  简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信   线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务   线程间通信常用方法 复制代码 代码如下: - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector

常见的javascript跨域通信方法_javascript技巧

本文主要介绍几种常见的javascript跨域通信方法.首先讲解一下JSONP.1.JSONP JSONP(JSON with Padding)是JSON的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外.利用 <script> 元素的这个开放策略,网页可以得到从其他