//修改yangkunlin的代码
服务器端:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server{
public static final int PORT=8888;
public static void main(String args[])throws Exception{
System.out.println("服务器正在等待连接中...");
Server server=new Server();
server.oper();
}
public void oper()throws Exception{
ServerSocket serverSocket=new ServerSocket(PORT);
boolean flag=true;
while(flag){
System.out.println("连接之后输入exit就退出服务器端");
Socket socket=serverSocket.accept();//进入阻塞状态,等待客户端的连接
ServerThread serverThread=new ServerThread(socket);
new Thread(serverThread).start();
String str=new BufferedReader(new InputStreamReader(System.in)).readLine();
if(str.equals("exit")){
socket.close();
flag=false;
}
}
}
};
class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket=socket;
}
public void run(){
try{
//读取客户端的数据
DataInputStream input=new DataInputStream(socket.getInputStream());
//向客户端发送的数据
DataOutputStream out=new DataOutputStream(socket.getOutputStream());
//读取客户端的数据
System.out.println("客户端传过来的数据:"+input.readUTF());
System.out.print("请输入:\t");
//发送键盘输入的一行
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);
input.close();
out.close();
}catch(Exception e){
System.out.println(e);
}
}
}
客户端:
import java.net.Socket;
import java.net.*;
import java.io.*;
public class Client{
public static final int PORT=8888;
public static final String IP="localhost";
public static void main(String args[])throws Exception{
System.out.println("客户端..");
System.out.println("当接收的\"bye\"的时候,客户端终止连接");
boolean flag=true;
Socket client=null;
while(flag){
client=new Socket(IP,PORT);
//读取服务器端数据
DataInputStream input=new DataInputStream(client.getInputStream());
//向服务器端端发送的数据
DataOutputStream out=new DataOutputStream(client.getOutputStream());
System.out.print("请输入:\t");
//从键盘接收数据
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);
//服务器端返回过来的数据
String recS=input.readUTF();
System.out.println("服务器端返回过来的数据:"+recS);
if("bye".equals(recS)){
System.out.println("客户端将关闭");
Thread.sleep(500);
flag=false;
}
}
client.close();
}
}
运行如下:

- 大小: 26.8 KB
分享到:
相关推荐
在.NET平台上,SuperSocket以其易于扩展和高度定制化的特性,成为了Socket多线程编程的一个优选方案。 **一、SuperSocket的核心特性** 1. **多线程支持**:SuperSocket采用了多线程模型来处理客户端的连接,确保了...
本项目标题为“Qt Socket 多线程代码实现”,是一个适合初学者的示例,它展示了如何使用QtcpSocket在多线程环境中构建一个服务器。下面将详细介绍相关知识点。 首先,我们来理解什么是Socket。Socket是一种在不同...
总结来说,Java Socket多线程是构建高并发网络服务的关键技术。通过合理地设计和实现,可以有效地提升服务器的并发处理能力,为用户提供更高效的服务。在实际项目中,应根据具体需求选择适合的线程模型,例如线程池...
总的来说,C#的Socket多线程编程结合了网络通信与并发处理的能力,使得开发者可以构建高效、稳定的网络应用。通过理解和掌握相关的同步机制以及Socket工作原理,开发者能够设计出复杂且健壮的网络系统。
Java Socket多线程聊天软件是基于Java编程语言构建的一个网络通信应用,主要利用Socket API来实现客户端与服务器之间的实时通信。在这个系统中,服务器端能够同时处理多个客户端连接,这得益于Java的多线程特性。SWT...
"基于socket多线程图片传输程序"的项目就是一个典型的实例,它利用了C++编程语言(通过Visual C++,简称VC)来实现在局域网内高效传输图片的功能。这个程序的核心在于socket通信和多线程技术,这两者都是网络编程的...
"Linux下基于socket多线程并发通信的实现" 本文主要探讨Linux操作系统下基于socket多线程并发通信的实现。 socket是UNIX系统开发中的网络通信接口,可以对台计算机之间的通信规范进行合理定义,从而达到通信的目的...
在这个"一个SOCKET多线程通信例程"中,我们将深入探讨如何在C++环境下,利用Visual C++ 6.0(VC6.0)开发工具,实现基于Socket的多线程通信。这个例子可能包含了两个关键文件:VCServer和VCClient,分别代表服务器端...
Java Socket多线程文件传输实例项目是一个典型的网络编程应用场景,主要涉及了Socket编程、多线程处理以及文件I/O操作等关键知识点。在这个项目中,开发者利用Java的Socket API实现了一个能够支持多个客户端同时进行...
总结来说,"SOCKET多线程控制台聊天"项目涉及到C++的网络编程,套接字API的使用,以及多线程技术的应用。通过"709Server"和"709Client"文件,我们可以研究服务器如何处理多个客户端的并发连接,以及客户端如何与...
在这个“Java Socket 多线程实例”中,我们将会探讨如何结合这两个关键概念来创建一个聊天服务器和客户端应用。 首先,`ChatServer.java` 文件通常包含了服务器端的代码。在Java中,通过`java.net.ServerSocket` 类...
本资源“C# socket多线程通讯 含客户端”提供了一个实例,用于演示如何在C#中使用Socket进行多线程通信,这对于理解和掌握网络编程具有很高的价值。 1. **Socket基础** Socket在C#中被封装在System.Net.Sockets...
### 利用Python SOCKET多线程开发FTP软件 在当今高度数字化的世界中,文件传输协议(FTP)作为互联网上的一项标准服务,被广泛用于在网络上进行文件传输。利用Python的socket库和多线程技术开发一个FTP软件,不仅...
在本项目中,“swing界面socket多线程聊天室”是一个基于Java Swing的客户端-服务器通信应用,它利用TCP协议来实现实时的聊天功能。这个系统不仅提供了群聊和私聊的功能,还允许用户发送文件,并且具备用户登录与...
用Delphi XE5 编写的 Socket多线程文件传输 客户端是单线程 服务器端是多线程 记录类型与文件流联合传输,通过记录类型传递信息给服务器 传输速度快 与网络拷贝相同 服务器端会通过MD5码验证接收到文件的正确性 并...
在这个"socket多线程例程非阻塞模式"的示例中,我们将深入探讨如何在Windows平台上实现多线程的socket通信,并了解非阻塞模式的工作原理。 首先,让我们来理解Socket的基本概念。Socket是进程间通信(IPC)的一种...
以下是关于Android与PC机Socket多线程通信的关键知识点: 1. **Socket基础**:Socket是网络通信中的一个概念,它代表了两台机器间的一个连接端点,允许数据在网络中传输。在Java中,Socket类和ServerSocket类提供了...
Socket多线程通信是网络编程中的重要概念,特别是在构建高性能、高并发的服务器时不可或缺。在标题"select_client.rar_Socket多线程通信_socket select_socket 多线程"中,我们可以推断这是一个关于如何利用Socket...
Java Socket多线程简易实现是网络编程中的一个基础概念,主要应用于客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、面向连接的字节流通信方式。多线程则是Java并发编程的重要特性,...
综上所述,VC Socket多线程文件传输涉及到网络编程基础、多线程技术、数据同步、错误处理以及性能优化等多个层面的知识,对提升网络应用的性能和用户体验具有重要意义。在实践中,开发者需要结合理论知识和具体案例...