- 浏览: 458064 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
JS操作XMLDOM(遍历和打印) -
lliiqiang:
我这边只要出现图表组件就报告2032号错误。
Flex 出现 Error #2032 是什么意思 -
全保生:
感谢!方法一:(已确认 可行)String username ...
jsp 的url传参中文乱码问题解决办法 -
dy804731771:
谢谢您的分享,对我有帮助
兼容的带样式的INPUT -
huang305585796:
火影头像好屌
FusionCharts统计图导出为图片或pdf
>>Socket相关的理解:
1>TCP:拨电话后和对方谈话 对应特点:有连接,安全(对方一定收到了且自己说什么对方听到的就是什么)。
UDP:写信给对方 对应特点:无连接,但对方不一定收到,收到了数据也不一定完整。
DNS:域名服务(每个域名对一个一个IP)。
2>比喻和对比
Socket:电话机 IP:电话号码 端口:分机号。
3>返回本地IP地址的三种方式:
InetAddress.getByName("localhost") ; InetAddress.getByName("127.0.0.1") (属于回路地址) ; InetAddress.getByName(null) ;
4>服务器端和客户端的功能
服务器端:开辟端口 提供服务;
客户端:指定服务器端和端口,获取服务。
>>一个简单的客户端/服务器端(Client/Server)的数据读写
Server服务器端代码:
import java.net.*;
import java.io.*;
class ServerrSocket
{
public static void main(String[] args)
{
server();
}
public static void server()
{
try{
ServerSocket ss = new ServerSocket(6000);//指定6000端口提供服务;
System.out.println("服务器端启动...");
Socket s = ss.accept(); //采取侦听的方法,随时接受客户端Client的请求
OutputStream os = s.getOutputStream(); //根据客户端Client创建输出流对象
InputStream is = s.getInputStream(); //根据客户端Client创建输入流对象
os.write("hello ,welcome you!".getBytes()); //向客户端Client写入数据
byte[] buf = new byte[100]; //声明一个byte数组,用于接收客户端Client的输入数据
int len = is.read(buf); //读取客户端的输入Client数据并保存到byte数组中,返回数组大小
System.out.println(new String(buf,0,len)); //服务器端Server输出客户端的输入
os.close();//关闭输出流
is.close(); //关闭输入流
s.close(); //关闭Socket对象
ss.close(); //关闭服务器Socket对象
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
客户端Client代码:
import java.net.*;
import java.io.*;
class ClientSocket
{
public static void main(String[] args)
{
client();
}
public static void client()
{
try{
Socket s = new Socket(InetAddress.getByName("127.0.0.1"),6000); //创建指定IP的端口号为6000的服务请求
OutputStream os = s.getOutputStream(); //根据服务器端Server创建输出流对象
InputStream is = s.getInputStream(); //根据服务器端Server创建输入流对象
os.write("hello ,i am dajian!".getBytes()); //向服务器度Server写入字节码数据
byte[] buf = new byte[100]; //声明byte数组,用于接收服务器端的数据
int len = is.read(buf); //读入服务器度Server写入的数据到byte数组,返回数组大小
System.out.println(new String(buf,0,len)); //客户端输出数据
os.close(); //关闭输出流
is.close(); //关闭输入流
s.close();//关闭Socekt对象
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
3>>与Thread结合,实现持续不间断的侦听客户端的请求
import java.net.*;
import java.io.*;
//服务器端继承Thread,变成线程类
class ServerrSocket extends Thread
{
private Socket s; //套接字属性
//带参构造函数指定哪个为套接字提供服务
ServerrSocket(Socket s)
{
this.s = s;
}
//重写run方法
public void run()
{
try{
OutputStream os = s.getOutputStream();//输出流
InputStream is = s.getInputStream(); //输入流
os.write("hello ,welcome you!".getBytes());
byte[] buf = new byte[100];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
os.close();
is.close();
s.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
server();
}
public static void server()
{
try{
ServerSocket ss = new ServerSocket(6000);
System.out.println("服务器端启动...");
//while死循环实现始终等待客户端请求,接受请求开启线程,提供服务
while(true)
{
Socket s = ss.accept();
new ServerrSocket(s).start();//紧接着走run方法,run方法结束,线程结束
}
//ss.close(); //持续侦听,所以不对服务器Socekt对象进行关闭
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
4>>缓冲流读写大量数据的处理和注意事项
import java.net.*;
import java.io.*;
//服务器端继承Thread,变成线程类
class ServerrSocket extends Thread
{
private Socket s; //套接字属性
//带参构造函数指定哪个为套接字提供服务
ServerrSocket(Socket s)
{
this.s = s;
}
//重写run方法
public void run()
{
try{
/* //原始的输入流输出流方法
OutputStream os = s.getOutputStream();//输出流
InputStream is = s.getInputStream(); //输入流
os.write("hello ,welcome you!".getBytes());
byte[] buf = new byte[100];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
os.close();
is.close();
s.close();
*/
/* 使用缓冲流读写数据 关键调用flush方法清空缓冲 或者最后将缓冲流对象关闭调用close方法
//演示调用flush方法清空缓冲
OutputStream os = s.getOutputStream();//输出流
InputStream is = s.getInputStream(); //输入流
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write("hello ,welcome you!".getBytes());
bos.flush();//必须清空缓冲,通过网络将数据送出去
byte[] buf = new byte[100];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
*/
//演示调用close方法关闭缓冲
OutputStream os = s.getOutputStream();//输出流
InputStream is = s.getInputStream(); //输入流
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write("hello ,welcome you!".getBytes());
byte[] buf = new byte[100];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
bos.close();
//os.close();
is.close();
s.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
server();
}
public static void server()
{
try{
ServerSocket ss = new ServerSocket(6000);
System.out.println("服务器端启动...");
//while死循环实现始终等待客户端请求,接受请求开启线程,提供服务
while(true)
{
Socket s = ss.accept();
new ServerrSocket(s).start();//紧接着走run方法,run方法结束,线程结束
}
//ss.close(); //持续侦听,所以不对服务器Socekt对象进行关闭
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
发表评论
-
【Blue-Bird】邮件群发系统
2013-03-25 21:46 1194【Blue-Bird】邮件发送系统,是我研发的一个Java ... -
java获取本地磁盘(过滤掉U盘和软盘等)
2012-10-16 09:40 4004File[] _files = File.listRoo ... -
XmlDOM 小结
2012-08-10 16:53 1061/* 获取节点: - xmlDoc.getElem ... -
eclipse内存溢出处理办法
2012-07-31 14:44 3826"java.lang.OutOfMemoryErr ... -
tomcat使用xml文件部署项目
2012-02-02 21:53 1236<Context path="/emss ... -
String.format
2011-12-02 23:09 1035String[] arr =new String[2]; ... -
配置一个最简洁的DWR
2011-04-04 16:31 1025期工作: 1.dwr官网下载dwr.jar(http://d ... -
通过xml文件在tomcat中部署项目&取消保存session.ser的配置
2011-03-29 10:34 1769<Context path="/anjian& ... -
plsql操作oracle数据库小结
2011-03-28 18:05 5649登录oracle D:\>sqlplus ... -
java编程思想读书笔记
2011-03-17 11:06 11071 用句柄操作对象:句柄也叫引用或者指针。 可将这一情 ... -
CVSNT 用户单一验证方式建设文档
2011-03-01 10:29 14041 配置cvs服务 CVSNT Control Panel ... -
EasyT.java(20110223版本)
2011-02-23 14:56 1556package org.hdht.util; impor ... -
java杂谈
2011-02-23 14:47 1152hibenate配置文件定义datas ... -
Spring下的BaseHibernateDAO
2011-02-23 14:46 3582package com.accp.myzf.hibernate ... -
带事务得spring配置文件
2011-02-23 14:44 1157<?xml version="1.0" ... -
单利模式,堆栈,队列
2011-02-23 14:43 1094单利实例-------------- using Syste ... -
线程3
2011-02-23 14:41 1066配置java环境变量: 1指定jdk的bin目录路径:pat ... -
线程2
2011-02-23 14:39 1066>>3内部class类继承Thread的线程实现方 ... -
Thread
2011-02-23 14:37 1238>>//一个简单Thread缓冲池的实现 / ... -
基于UDP的Socket编程
2011-02-23 14:33 17261>>基于UDP的Socket编程用到的类和方法 ...
相关推荐
### 基于TCP的Socket编程在VC中的应用与实现 #### 一、知识点概览 在VC(Visual C++)环境下进行网络编程时,基于TCP的socket编程是实现客户端与服务器之间通信的重要方式之一。本文将从初始化、创建socket、绑定...
"基于TCP/IP的socket编程"是一个深入探讨如何使用socket接口进行网络通信的主题。Socket编程允许应用程序通过网络发送和接收数据,它是互联网上不同计算机之间交互的核心机制。 在给定的描述中,我们看到一个创新的...
本篇文章将深入探讨基于TCP的Socket编程,包括基本概念、服务器端和客户端的实现,以及常见问题。 首先,TCP套接字(Socket)是应用层与TCP层之间的接口,它允许程序通过TCP协议发送和接收数据。TCP保证了数据的...
本主题聚焦于使用Java进行基于TCP的Socket编程,通过`File_client.java`和`File_server.java`两个文件来实现服务器和客户端之间的数据交换。 首先,TCP Socket编程的基础是Java的`java.net.Socket`和`java.net....
### Linux环境下基于TCP的Socket编程浅析 #### 摘要 本文主要探讨了Linux环境下基于TCP协议的Socket编程技术。Socket作为一种通用的进程间通信(IPC)方式,不仅适用于同一台计算机上的进程通信,也广泛应用于网络...
基于TCP的Socket编程是计算机网络通信中的一项核心技术,它允许两个网络应用程序之间进行数据交换。Socket是一种特殊的网络编程接口,而TCP(传输控制协议)是一种可靠的面向连接的协议。在这份“基于TCP的Socket...
本压缩包文件“基于TCP的SOCKET编程代码包”提供了多个关于TCP SOCKET编程的实例,适用于学习和开发网络通信应用。 首先,我们要理解SOCKET,它是网络编程中的基本接口,允许应用程序通过网络发送和接收数据。在...
在这个"基于TCP的socket编程(python)"的项目中,我们看到的是一个针对计算机网络课程设计的作业,其中增加了登录验证和通过输入"exit"退出的特性。这个作业主要涉及到Python语言中的Socket模块,用于实现TCP...
2. Socket编程:Socket是一种网络编程接口,提供了基于TCP/IP协议的网络通信功能。 3. TCP三次握手:TCP三次握手是TCP协议中的一种连接建立机制,通过三次握手,客户端和服务器端可以建立可靠的连接。 4. Etheral抓...
基于TCP/IP协议的Socket编程 TCP/IP协议是网络通信协议的基础,它规定了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据传输格式以及传送方式。TCP/IP协议的基本传输单位是数据包(datagram),TCP...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
本教程旨在帮助初学者理解TCP Socket编程的基本概念,并通过简单的实例演示如何实现客户端与服务器端的交互。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保...
本文详细介绍了基于Socket的UDP和TCP的编程原理和方法,适合于那些对UDP/TCP的socket编程不太清楚的同学
在这个"基于TCP的socket编程实例"中,我们将深入探讨如何使用socket API进行TCP通信,并通过"main"这个程序文件来理解其实现过程。 首先,TCP socket编程主要包括服务器端和客户端两部分。服务器端需要先启动,监听...
在C#中,我们可以使用System.Net.Sockets命名空间下的TcpListener和TcpClient类来实现TCP Socket编程。下面将详细介绍这两个类以及如何使用它们创建服务端和客户端。 **一、服务端实现** 1. **TcpListener类**:...
TCPSocket编程是网络编程中的一个关键领域,它涉及到如何在不同计算机之间建立可靠的、基于TCP/IP协议的数据传输。在本文中,我们将深入探讨Socket的基本概念、在Windows和Linux环境下的实现、常用的Socket函数以及...
总的来说,TCP Socket编程涉及到网络通信的基础知识,包括套接字的创建、连接建立、数据传输以及异常处理。这个资源为初学者提供了一个简单的起点,帮助理解TCP文件传输的机制。在实际项目中,还需要考虑更多的因素...