`

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、ServerSocket、C/S模式

    总之,Java的Socket和ServerSocket提供了强大的网络编程能力,通过C/S模式实现了客户端和服务器之间的高效通信。通过深入学习和实践,你可以掌握构建分布式应用程序的基础,为更复杂的网络项目打下坚实基础。

    JAVA Socket编程实现文件上传

    Java Socket编程是网络编程的基础,它提供了在两个应用程序之间建立通信连接的能力。在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库...

    C/S的一个简单实现

    C/S架构下的Java Socket编程实现 本资源是关于C/S架构下的Java Socket编程实现,通过客户端和服务器端的代码实现了基本的访问功能。 Socket编程 Socket编程是指通过使用Socket对象来实现网络编程的方法。在Java...

    java课程设计(c/s)

    【Java课程设计(C/S)】是针对计算机科学与技术专业学生的一项实践任务,旨在让学生深入理解客户端/服务器(Client/Server,C/S)架构,并掌握使用Java编程语言进行系统开发的技术。在这个项目中,学生们通常会被...

    Socket服务端客户端以tcp/ip协议发送接收报文

    在IT领域,网络通信是不可或缺的一部分,而Java Socket编程则是实现网络通信的一种常见方式,尤其在TCP/IP协议栈上。本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 ...

    java编写的简单c/s通讯程序

    本篇介绍了一个简单的Java C/S通讯程序的设计与实现。通过这个例子,我们可以了解到如何利用Java进行基本的网络编程,以及C/S架构的基本原理。对于初学者来说,这是一个很好的学习起点。在未来的学习过程中,还可以...

    总结java_socket编程.doc

    Socket编程是Java语言中用于网络编程的主要技术之一。Socket是一种编程界面,用于实现客户方和服务方的连接。Socket通常用来实现客户机/服务器结构的通信。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket...

    Java实现C/S架构的聊天系统

    Java的Socket编程是实现C/S通信的关键。Socket是TCP/IP协议的一部分,用于两个网络应用程序之间建立连接,进行双向通信。在聊天系统中,服务器会创建一个监听Socket,等待客户端的连接请求。一旦连接建立,客户端和...

    C/S聊天程序(JAVA,C/S)

    1. **Socket编程**:Java的`java.net.Socket`和`ServerSocket`类是实现C/S通信的基础。服务器端创建`ServerSocket`监听特定端口,等待客户端的连接请求;客户端使用`Socket`连接到服务器,建立通信通道。 2. **多...

    Java swing实现简单的C/S聊天及文件传输系统

    在这个项目中,"Java swing实现简单的C/S聊天及文件传输系统"是利用Swing构建一个客户端/服务器(Client/Server)架构的聊天和文件传输应用。这个系统允许用户通过网络进行文本聊天并交换文件。以下是关于这个项目的...

    基于java socket网络编程实现的五子棋游戏,可多人在线玩耍,聊天

    一旦有新的玩家尝试连接,服务器会创建一个新的Socket与之对应,形成一对一对一的连接。每个玩家的Socket连接代表一个独立的通信通道,确保了游戏过程中玩家之间的消息互不影响。 游戏逻辑的实现主要分为以下几步:...

    Java聊天室c/s开发

    在Java中实现C/S模式的聊天室,我们可以利用Java丰富的网络编程库和多线程特性,构建稳定且高效的通信平台。 首先,我们需要理解C/S架构的基本概念。在这个模式中,"客户端"是用户直接交互的部分,负责显示信息和...

    C/S模式下的java图书管理系统

    在这个场景中,我们讨论的是一个基于Java实现的网络版图书管理系统,它利用C/S模式为用户提供便捷的图书管理功能。 首先,让我们深入了解Java在C/S模式中的角色。Java作为一种跨平台的编程语言,具有丰富的类库和...

    java的Socket编程

    Java的Socket编程是Java网络编程的核心部分,它提供了在TCP/IP协议栈上进行通信的机制。Socket接口是对TCP/IP协议的抽象,使得开发者能够轻松地创建客户端和服务器应用程序,实现网络上的数据交换。在这个主题中,...

    java socket 编程,Java socket 编程实例

    接下来,我们通过一个简单的Java Socket编程示例来深入了解如何在Java中实现Socket编程。该示例展示了一个简单的Web客户端程序,用于获取一个HTML页面的内容。 ```java import java.io.*; import java.net.*; ...

    基于C/S模式的Java聊天室

    【标题】"基于C/S模式的Java聊天室"是一个典型的网络通信项目,它采用客户机/服务器(Client/Server,简称C/S)架构,通过Java编程语言实现。在这个模式下,客户端作为用户交互的界面,负责发送和接收聊天信息;而...

    Java Socket实现简单点对点聊天软件

    Java Socket实现的简单点对点聊天软件是一种基于网络通信的C/S(客户端/服务器)架构的应用。在这个系统中,服务器端作为一个中央节点,接收并转发客户端之间的消息,而客户端则负责用户交互,发送和接收聊天内容。...

    Java TCP/IP Socket编程

    在实际应用中,Java TCP/IP Socket编程常用于实现聊天程序、文件传输、远程控制等场景。理解并熟练掌握Socket编程,有助于开发者构建稳定、高效、可靠的网络应用。 `Java+TCPIP+Socket编程(中文版).pdf`这个文件很...

    Java面试之Socket编程

    Java网络编程是开发分布式应用程序的关键技术之一,其中Socket编程扮演着至关重要的角色。在Java面试中,对Socket编程的理解和应用能力通常是评估开发者技能的重要标准。以下是对Socket编程的详细阐述: 1. **Java ...

    JAVA Socket 网络编程教程

    一个简单的聊天室系统就是一个使用Java Socket实现的典型例子,服务器端接收多个客户端的连接请求,每个客户端都可以发送消息给其他所有在线的客户端。 十、总结 Java Socket编程是构建网络应用的基础,掌握其原理...

Global site tag (gtag.js) - Google Analytics