socket服务端需要以下几点:
SocketServer 代码:
package com.chen.study.socket.socketServer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import com.sun.jmx.snmp.tasks.ThreadService; public class SocketServer { private static int port = 8000; private static String clientcount= "客戶端总數量:"; private static String clientip= "当前连接客戶端IP:"; /** * @author Administrator * socket服务端 */ public static void SocketServer(){ try { //1.创建SOCKET服务 给定 8000 端口 ServerSocket socketserver = new ServerSocket(port); Socket socket = null; int count = 0; System.out.println("IP为:"+InetAddress.getLocalHost().getHostAddress()+"" + ",端口为:"+port+" 的socket服务已经启动,等待客户端的请求....."); while(true){ //2.启动监听,程序处于阻塞状态,等待客户点请求 socket = socketserver.accept();//未发送完全的数据可以再等3600秒才关闭底层socket socket.setSoLinger(
true
,
3600
);
//采用多线程开启一个Socketserver ServerThread serverthread = new ServerThread(socket); serverthread.setPriority(4); //设置优先级 0-5 serverthread.start(); count++; System.out.println(clientcount+count); InetAddress address = socket.getInetAddress(); System.out.println(clientip+address.getHostAddress()+"\n----------------"); if(count==3){ socketserver.close(); SocketServer(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 主函数启动Socket服务 */ public static void main(String[] args) { SocketServer(); } }
添加多线程,实现多客户端链接
ServerThread 代码:
package com.chen.study.socket.socketServer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class ServerThread extends Thread { //创建一个SOCKET类 private static Socket socket = null; private static String severname = "我:"; private static String clientname = "客户端说:"; private static String seversay= "你好,服务端收到请求!"; public ServerThread(Socket socket ){ this.socket = socket; } //线程执行操作,重写父类RUN方法 public void run(){ //3.获取输入流,用来读取客户端发起的信息 InputStream is = null; BufferedReader br = null; OutputStream os = null; PrintWriter pw = null; try { is = socket.getInputStream(); //将字节流转字符流,并给输入流添加缓冲 br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info=br.readLine())!=null){ System.out.println(clientname+info); } socket.shutdownInput(); /* * 回复客户端信息 */ //获取输出流 os = socket.getOutputStream(); pw = new PrintWriter(os); System.out.println(severname+seversay); pw.write(seversay); pw.flush(); socket.shutdownOutput(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(pw!=null){ pw.close(); } if(br!=null){ br.close(); } if(is!=null){ is.close(); } if(os!=null){ os.close(); } if(socket!=null){ socket.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
客户端
socket客户端代码:
package com.chen.study.socket.socketClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class SocketClient { private static int port = 8000; private static String ip = "192.168.119.35"; private static String clientname = "我:"; private static String severname = "服务器:"; private static String clientsay = "你是服务端吗?"; /** * @param args */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub socketClient(); } /** * socket客户端调用服务端 * @throws IOException */ public static void socketClient() throws IOException{ Socket socket = null; OutputStream os = null; PrintWriter pw = null; InputStream is = null; BufferedReader br = null; try { // 1.创建SOCkET客户端 ,配置制定的IP 端口 socket = new Socket(ip, port); // 2.创建输出流 os = socket.getOutputStream(); pw = new PrintWriter(os); System.out.println(clientname+clientsay); pw.write(clientsay); pw.flush(); socket.shutdownOutput(); //关闭输出流 //3.获取服务端信息 is = socket.getInputStream(); br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info=br.readLine())!=null){ System.out.println(severname+info); } socket.shutdownInput();//关闭输入流 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(pw!=null){ pw.close(); } if(br!=null){ br.close(); } if(is!=null){ is.close(); } if(os!=null){ os.close(); } if(socket!=null){ socket.close(); } } } }
注意问题:
1、多线程 设置优先级
2、不需要关闭输入输出流
相关推荐
在这个“简单socket通信,学习使用”的项目中,我们可以看到一个基础的Socket通信示例,这对于初学者理解网络通信的基本原理非常有帮助。 首先,我们需要理解Socket的概念。Socket在计算机网络中是一种通信端点,它...
socket学习资料,有详细的代码举例,错误分析。
本代码从简单的服务器端获得时间,在客户端获取服务端的时间,是套接字最基本的一个实例
Socket基础知识是计算机网络编程中的重要概念,主要用于实现进程间的通信,尤其在网络环境中,它使得不同计算机上的应用程序能够相互通信。以下是对Socket基础知识的详细解释: 1. **Socket定义**: Socket,又...
在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C#作为.NET框架下的主要编程语言,提供了强大的Socket类库来实现网络通信。本文将深入探讨C# Socket入门学习的关键知识点,帮助初学者理解并掌握Socket...
此标题指的是一本适合初学者了解和学习 PHP Socket 编程的基础指南。 #### 描述:一本有利于刚开始接触 PHP Socket 编程的基础教程。 这本教程旨在帮助初学者快速入门 PHP Socket 编程,并通过实例和讲解来加深...
1. **Socket基础**:Socket是网络通信的基础,它在应用层和传输层之间提供接口。在C#中,Socket类位于System.Net命名空间下,通过创建Socket实例,开发者可以进行发送和接收数据的操作。 2. **TCP(Transmission ...
### Socket基础知识概述 在计算机网络通信领域中,`socket`是一种重要的编程接口,它使得不同计算机之间能够通过网络进行数据交换。本篇文章将基于提供的文件信息来深入探讨`socket`的基础概念及其在C#中的应用。 ...
Socket编程在IT行业中是网络通信的基础,特别是在C#这样的编程语言中,它是构建客户端-服务器应用程序的关键技术。本文将深入探讨C#中的Socket编程,并基于提供的文件名"SocketServerAndClient.rar"和"socket.zip"来...
这份"Socket网络编程学习笔记"涵盖了从基础概念到高级技术的全面知识,对于初学者来说是一份非常有价值的参考资料。以下是对这份笔记内容的详细解读: 1. **Socket基本概念**:Socket在计算机网络中扮演着桥梁的...
Socket编程是计算机网络通信...通过学习TCP和UDP的使用、Socket的创建、连接、数据传输以及异常处理,开发者可以构建出高效、稳定的网络应用程序。在实际项目中,还需要结合具体需求,灵活运用各种网络编程技巧和策略。
在IT领域,Linux、C语言、C++以及数据结构和Socket编程是计算机科学与软件工程的基础,对于任何希望深入理解操作系统、系统级编程或者网络应用开发的开发者来说,这些都是不可或缺的知识点。 首先,我们来详细了解...
Socket编程在IT行业中是网络通信的基础,特别是在Java领域,它被广泛用于构建客户端-服务器应用程序。"SSocket 实例代码 demo" 提供了一个强大的学习资源,对于初学者来说,能够帮助他们快速理解和掌握Socket编程的...
在这个基础学习代码中,我们将深入理解Socket的基本概念,涵盖TCP和UDP两种主要的传输协议。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP中,数据被分成...
在本教程中,我们将深入探讨Socket的基础知识,包括服务端和客户端的创建与交互。 首先,让我们了解什么是Socket。Socket,通常被称为套接字,是网络通信中的一个抽象概念,它允许两个程序通过网络进行数据交换。在...
socket通信原理 学习socket的好资料 从零基础学习快速掌握
总的来说,这个压缩包提供的资源全面覆盖了VC++6.0中的Socket编程,从理论基础到实战技巧,对于想要学习或提升Socket编程技能的开发者来说,是一份非常宝贵的资料集合。通过深入学习这些内容,开发者不仅可以理解...
在 Java 中,Socket 和 ServerSocket 类是进行 Socket 通信的基础。Socket 类代表客户端,ServerSocket 类代表服务器端。以下是一些常用的构造方法: - `Socket(InetAddress address, int port)`:创建一个连接到...
在IT行业中,网络通信是不可或缺的一部分,而Socket编程则是实现客户端和服务器端通信的基础。本文将深入探讨"C# SocketClient 基础版"的相关知识点,帮助开发者理解如何在C#环境中构建一个基本的Socket客户端。 ...