socket编程---一个简单例子

服务器端代码(多线程):

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class MultiEchoServer {
    private static ServerSocket serverSocket;
    private static final int PORT = 12345;

    public static void main(String[] args) throws IOException {
        try {
            serverSocket = new ServerSocket(PORT);
        } catch (IOException e) {
            System.out.println("Unable connect to the port");
            System.exit(1);
        }
        do {
            Socket client = serverSocket.accept();
            System.out.println("New client accept...");
            ClientHandler clientHandler = new ClientHandler(client);
            clientHandler.start();
        } while (true);
    }
}

class ClientHandler extends Thread {
    private Socket client;
    private Scanner input;
    private PrintWriter output;

    public ClientHandler(Socket client) {
        this.client = client;
        try {
            input = new Scanner(client.getInputStream());
            output = new PrintWriter(client.getOutputStream(),true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        String receive = "";
        do {
            receive = input.nextLine();
            System.out.println("Server receive message:" + receive);
            output.println("Echo:" + receive);
        } while (!receive.equalsIgnoreCase("q"));
        try {
            if (client != null) {
                System.out.println("Closing connection...");
                client.close();
            }
        } catch (IOException e) {
            System.out.println("Unable to close connection...");
        }
    }
}

客户端代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class MultiEchoClient {
    private static InetAddress host;
    private static final int PORT = 12345;

    public static void main(String[] args) {
        try {
            host = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            System.out.println("Host id not found!");
            System.exit(1);
        }
        SenderMessages();
    }

    public static void SenderMessages() {
        Socket socket = null;
        try {
            socket = new Socket(host, PORT);
            Scanner input = new Scanner(socket.getInputStream());
            PrintWriter outpout = new PrintWriter(socket.getOutputStream(),true);
            Scanner userInput = new Scanner(System.in);
            String message, response;
            do {
                System.out.println("Enter Message:");
                message = userInput.nextLine();
                outpout.println(message);
                response = input.nextLine();
                System.out.println("Server " + response);
            } while (!message.equalsIgnoreCase("q"));
            input.close();
            userInput.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (socket != null) {
                    System.out.println("Closing connetion...");
                    socket.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
时间: 2024-10-08 15:08:32

socket编程---一个简单例子的相关文章

[转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计socket编程就已经基本入门了. 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询:3) 可以直接使用书上的例子更好. http://blog.csdn.net/zhenjing/article/details/4770490 TCP C

socket编程——一个简单的例子(转)

原文地址:http://blog.csdn.net/wind19/article/details/6156339 从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client +++++++                                          ++++++++ 创建socket                               

socket编程——一个简单的例子

从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client +++++++                                          ++++++++ 创建socket                                          创建socket +++++++                              

socket编程——一个简单的样例

从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server                                                  client +++++++                                          ++++++++ 创建socket                                          创建socket +++++++                            

java socket编程开发简单例子

1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特性,如果要测试以下代码,java版本不能低于1.8 // 客户端 public static void main(String[] args) { try (Scanner scan = new Scanner(System.in); Socket client = new Socket("127.0.0.1"

Swift和C混合Socket编程实现简单的ping命令

这个是用Mac下的Network Utility工具实现ping命令,用Wireshark抓取的ICMP数据包: 发送ICMP数据包内容 接受ICMP数据包内容 一.icmp结构 要真正了解ping命令实现原理,就要了解ping命令所使用到的TCP/IP协议.ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.ICMP协议是IP层的 一个协议,但是由于差错报告在发送给报文源发方时可能

socket编程,简单多线程服务端测试程序

socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.accept.recv.send等函数的介绍,今天写了一个CUI界面的测试程序(依赖MFC)作为补充.程序功能简介如下: 1:一个线程做监听用. 2:监听线程收到客户端连接后,创建新线程接收客户端数据.所有对客户端线程将加入容器,以便管理. 3:服务端打印所有客户端发来的信息. 4:服务端CUI界面输入数字

用Python socket实现一个简单的http服务器(post 与get 的区别)

预备知识: 关于http协议的基础请参考这里. 关于socket基础函数请参考这里. 关于python网络编程基础请参考这里. 废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版的简易http服务器,代码改编自http://www.cnblogs.com/vamei/ httpServer.py Python Code 1 2 3 4 5 6 7 8 9 10 11 12 13

C#通信之Socket通信的简单例子

socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. 这里构建一个简单的例子,客户端发消息,服务端接收,然后回执一条消息.大致能够了解如何使用Socket进行通信. 服务端监听,接收信息: 客户端连接,并发送信息: 使用Socket通信,程序一般会在幕后运行,然后再合适的时间提示信息.这很自然的就会涉及到多线程的问题.在这个例子中因为每个连接都要创建一 个线程,所以需要对线程进行管理.这里我使用了两个类:Conn