总结:
服务器程序编写:
①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。③调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。④最后关闭通信套接字。
客户端程序编写:
①调用Socket()创建一个流套接字,并连接到服务器端; ②调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 ③最后关闭通信套接字。
下面我们动手写一个使用TCP协议通信的服务器端可客户端:
服务器端:
package cn.com.xinli.test.socket;
import java.net.*;
import java.io.*;
public class SocketServer extends Thread
{
private Socket socket;
SocketServer(Socket s)
{
this.socket=s;
}
public void run()
{
try
{
OutputStream os=socket.getOutputStream();
/*在这里我们使用了带缓冲的输出流,因此与需要调用flush()
*或者当缓冲区满了才会发送数据
*
* */
BufferedOutputStream bos=new BufferedOutputStream(os);
InputStream is=socket.getInputStream();
bos.write("欢迎你,我收到消息了!".getBytes());
bos.flush();
byte[] buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
bos.close();
os.close();
is.close();
socket.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
Socket socket=new Socket();
SocketServer socketServer=new SocketServer(socket);
socketServer.server();
}
public static void server()
{
System.out.println("服务器启动!");
try {
ServerSocket ss=new ServerSocket(6000);
while(true)
{
Socket socket=ss.accept();
new SocketServer(socket).start();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
客户端:
package cn.com.xinli.test.socket;
import java.net.*;
import java.io.*;
public class SocketClient
{
public static void main(String[] args)
{
SocketClient.client();
}
public static void client()
{
System.out.println("客户端启动!");
try {
Socket s=new Socket(InetAddress.getByName(null),6000);
OutputStream os=s.getOutputStream();
InputStream is=s.getInputStream();
byte[] buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
os.write("我是流氓我怕谁".getBytes());
os.close();;
is.close();
s.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
先运行服务器端,后运行客户端,在双方完成通信以后,服务器端并没有推出,因为服务器端使用了多线程,每次来一个客户端请求都会开一个线程来处理
分享到:
相关推荐
本教程将基于LabVIEW,一个强大的图形化编程环境,探讨如何进行TCP编程。LabVIEW因其直观的编程界面和丰富的功能,常被用于数据采集、仪器控制和测试测量等应用,而TCP编程则能帮助我们实现设备间的高效通信。 首先...
本文将围绕Winsock接口展开,内容涵盖了TCP协议的基本概念、编程模型以及如何使用Winsock API实现TCP编程。 ### TCP编程的基础知识点 #### 1. 套接字基础知识 - 套接字(Socket)是在应用层和传输层之间的一个...
TCP编程是网络编程中的重要环节,对于任何希望深入理解网络通信或者开发网络应用的初学者来说,都是必不可少的知识点。 在TCP编程中,首先要理解的是TCP的三次握手建立连接的过程。当一个主机想要与另一个主机建立...
在TCP编程中,开发者通常会使用像Visual C++这样的编程环境来实现网络通信功能。本篇文章将深入探讨TCP编程的基本概念、原理以及如何在Visual C++环境下进行实践。 首先,TCP协议确保了数据的可靠传输,它通过三次...
文件“TestSocket”可能包含了一个简单的Socket TCP编程示例,可能涵盖了服务器端和客户端的代码实现,读者可以通过阅读和运行这个示例来加深理解。在实际开发中,还可以结合错误处理、超时机制、性能优化等技术,让...
本教程主要关注单播通信,即一对一的通信模式,通过Winsock进行TCP编程,模拟FTP(文件传输协议)功能。我们将深入探讨TCP编程的基础知识、C/S架构、文件操作以及如何在C++中实现这一过程。 TCP(Transmission ...
MFC提供了对TCP编程的支持,使得开发者可以方便地在Windows环境下进行网络通信。 在"MFC TCP编程"这个主题中,我们主要探讨如何利用MFC库进行TCP客户端和服务器端的编程。以下是一些关键知识点: 1. **...
TCP编程通常涉及到网络通信,文件传输,服务器和客户端应用的开发等场景。本篇将深入探讨TCP编程的关键概念、流程以及在文件传输中的应用。 一、TCP协议基础 TCP是基于连接的协议,它在数据传输前会先建立连接,...
在Linux系统中,TCP编程是网络编程的重要组成部分,主要用于实现可靠的数据传输。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保了数据包在网络中的有序和无损...
10. **实时系统中的TCP编程**:在LabVIEW RT(实时版)环境下,TCP编程也有其特殊考虑,如内存管理和实时性能优化。 通过深入研究这些DEMO,用户不仅可以学习到TCP的基本概念,还能掌握在LabVIEW中实现TCP通信的...
本文将深入探讨如何使用Java进行TCP编程,分享一些原创思路和技术要点。 首先,我们要了解Java中的Socket类和ServerSocket类,它们是TCP编程的基础。`ServerSocket`用于创建服务器端的监听套接字,等待客户端的连接...
在IT行业中,网络编程是构建分布式系统的关键技术之一,而C#语言提供了强大的TCP编程支持。本项目"**C# tcp编程_聊天程序**"旨在实现一个基于TCP协议的聊天应用,利用C#的异步编程特性提高性能,并且自定义了协议来...
本实例“C#的TCP编程实例”着重讲解如何在C#环境下实现TCP客户端与服务器端的通信,这对于理解和应用网络编程至关重要。 TCP是一种基于IP(Internet Protocol)的传输层协议,它提供了端到端的可靠数据传输,确保...
本篇文章将深入探讨Linux环境下的TCP编程,通过实例代码帮助理解相关概念。 首先,TCP编程涉及的主要组件包括socket接口、套接字地址结构(如sockaddr_in)以及网络IO模型。Socket接口是操作系统提供的API,用于...
TCP编程涉及的概念还包括错误处理、异步编程、数据序列化与反序列化等。例如,为了提高性能,通常会采用异步操作处理客户端请求,如TcpClient的BeginConnect和EndConnect方法,以及TcpListener的...
本文将详细探讨使用C#实现同步TCP编程的四种方式,并以实际的项目示例进行解析。 首先,我们来看“TcpSyncDemo.rar”,这是一个基于C#的同步TCP客户端和服务端的实现。同步TCP编程意味着程序会阻塞等待数据的发送和...
标题中的“一个简单的UDP/TCP编程库”是指一个专门用于UDP和TCP网络通信的软件开发库,它旨在简化程序员在处理这些协议时的工作流程。这个库不仅支持两种基本的网络传输协议,UDP(用户数据报协议)和TCP(传输控制...
本资料包“计算机网络扩展---TCP编程-2019网工.zip”显然专注于教授如何使用C语言进行TCP编程。 一、TCP编程基础 1. **TCP连接建立**:TCP连接的建立遵循三次握手过程,确保双方都能正确地同步和建立连接。客户端...
总的来说,Linux下的QT TCP编程涉及了网络编程的基本概念、QT的网络API使用、错误处理、异步模型和多线程等知识。通过实践`tcpServer`和`tcpClient`项目,你可以深入理解这些概念,并具备在实际项目中应用的能力。