`

Java Socket编程之简单的C/S一对一的实现

 
阅读更多

Server:

package com.wjy.server;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
 * caution:boot the server first.
 * @author Jiyuan Wang
 *
 */
public class TalkServer extends JFrame implements ActionListener{
    private static JButton send=null;
    private static JTextField inputText=null;
    private static JTextArea showText=null;
    private static ServerSocket serverSocket=null;
    private static Socket socket=null;
    private static DataInputStream dataInputStream=null;
    private static DataOutputStream dataOutputStream=null;
    public TalkServer(){
        send=new JButton("Send");
        send.addActionListener(this);
        send.setEnabled(true);
        
        inputText=new JTextField();
        
        showText=new JTextArea();
        
        add(send,BorderLayout.NORTH);
        add(inputText, BorderLayout.SOUTH);
        add(showText, BorderLayout.CENTER);
        
        setTitle("Server");
        setBounds(1000,0,400,400);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
public static void main(String[] args)
{
    new TalkServer();
    try {
        serverSocket=new ServerSocket(4170);
        socket=serverSocket.accept();
        showText.append("Connect successd.\n");
        dataInputStream=new DataInputStream(socket.getInputStream());
        dataOutputStream=new DataOutputStream(socket.getOutputStream());
        while (true) {
            showText.append("Client said: "+dataInputStream.readUTF()+"\n");
        }
        
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
}
@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    try {
        dataOutputStream.writeUTF(inputText.getText());
        dataOutputStream.flush();   //本人一直把这个程序调试不通,最后发现没加这句话导致服务端显示不了客户端的输入。
        showText.append("I said: "+inputText.getText()+"\n");
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}
}

 

Client:

package com.wjy.client;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

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

/**
 * caution:boot the server first.
 * @author Jiyuan Wang
 *
 */

public class TalkClient extends JFrame implements ActionListener{
    private static JButton send=null;
    private static JTextField inputText=null;
    private static JTextArea showText=null;
    private static Socket socket=null;
    private static DataInputStream inputStreamReader=null;
    private static DataOutputStream outputStreamWriter=null;
    public TalkClient(){
        send=new JButton("Send");
        send.addActionListener(this);
        send.setEnabled(true);
        
        inputText=new JTextField();
        
        showText=new JTextArea();
        
        add(send,BorderLayout.NORTH);
        add(inputText, BorderLayout.SOUTH);
        add(showText, BorderLayout.CENTER);
        
        setTitle("Client");
        setBounds(0,0,400,400);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
public static void main(String[] args)
{
    new TalkClient();
    try {
        socket=new Socket("127.0.0.1",4170);
        inputStreamReader=new DataInputStream(socket.getInputStream());
        outputStreamWriter=new DataOutputStream(socket.getOutputStream());
        while(true){
            showText.append("The Server said: "+inputStreamReader.readUTF()+"\n");
        }
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    try {
        outputStreamWriter.writeUTF(inputText.getText());
        outputStreamWriter.flush();   //本人一直把这个程序调试不通,最后发现没加这句话导致服务端显示不了客户端的输入。
        showText.append("I said: "+inputText.getText()+"\n");
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}
}

 

分享到:
评论

相关推荐

    Java版socket编程实现带语音聊天和文件传送功能

    本资源是本人前面发过的一个局域网聊天工具的升级版。...代码保证可用,如有问题请留言,代码较规范,结构清晰,相信对学习java socket编程和swing界面开发的朋友有一定的帮助。 注:main函数在MainFrame类

    java版socket编程实现局域网聊天和文件传送

    用java socket编写的局域网聊天和文件传送,类似飞秋,但没那么多功能,目前实现的功能有:聊天,发送窗口抖动,传送文件,其中传送文件采用TCP实现,其他的用UDP实现。本文件包含源代码和用到的jar包,代码结构清晰...

    Java+TCP/IP+Socket编程 原书第2版

    本书特点 对Socket编程的重点进行了集中简明 的介绍,以使读者能够迅速掌握;并且使工程师们能够迅速地将所学的技能应用到他们的日常工作 中。 对最新的Java平台(1.7)进行了简明而紧随其发展的介绍,使开发者即使...

    Java版socket编程实现带语音聊天和文件传送功能的局域网聊天工具

    本资源是本人前面发过的一个局域网聊天工具的升级版。...代码保证可用,如有问题请留言,代码较规范,结构清晰,相信对学习java socket编程和swing界面开发的朋友有一定的帮助。 注:main函数在MainFrame类

    java中socket在线编程聊天系统的小案例

    g/s的聊天小案例,可用于学习socket

    EasyChat ,Java Socket编程,简易聊天程序

    1、界面模仿QQ界面,能够发起一对一聊天、接受聊天请求; 2、能够以当前日期和时间(精确到分)命名的文件来保持聊天记录; 3、能够调出聊天记录; 4、添加和用户头像 5、还有更多功能,您看了就知道。 6、有一个小...

    基于Socket的java网络编程

    基于Socket的java网络编程, Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server...

    一个服务器对多个客户端的MFC Socket编程示例(实现简单的即时通讯功能)

    思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户端的socket对象,而MFC框架提供了CSocket类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的...

    银行转账系统 java socket编程

    和服务器端的socket,实现对数据的增删改查;数据库采用的sql server2000,只有一个表,结构很简单,所以数据库文件不包含在此压缩文件里,你可以根据自己的需要设计一个。 导入项目之后,Login,Login2,Login3,...

    java,socket多线程一对一聊天

    java语言,基于socket的多线程一对一聊天,暂不支持并发

    Java Socket编程入门

    这是一个很好的Java Socket入门介绍,对没写过Socket程序的很有帮助

    局域网聊天 socket编程 java源程序

    一个java socket套接字应用实现局域网聊天的功能,内附源码,可运行。

    Java Socket编程解析

    这是一个很好的Java Socket解析,对您的不理解问题会有帮助

    Java TCPIP Socket编程 源码

    一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP Socket编程中,客户端有多个,而服务器端只有一个,客户端TCP向服务器端TCP发送连接请求,服务器端的...

    用Java Socket实现一个简单的基于P2P范型的即时聊天系统。

    暂时仅仅设计了以下几个功能点: 1.点对点单人聊天; 2.多人在线同时聊天; 3.用户可以自由加入和退出系统; 4.具备用户在线状态监听;

    三步学会Java Socket编程

     客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。  {建立服务器...

    java Socket实现的多人聊天 源代码

    java Socket实现的多人聊天 源代码网络编程经典实例

    用Java实现基于Socket的网络编程

    Java实现的聊天室,使用TCP协议,可以进行一对一、一对多的聊天,比较简陋,没有用户界面,输入输出都是在控制台。

    基于socket实现Ping功能的源代码

    基于socket的网络编程技术,用到SOCK_RAW的原始套接字类型。里面对简单ICMP协议和IP协议有着很完整的诠释和定义。可以交流zhaquanmin@163.com

Global site tag (gtag.js) - Google Analytics