
网络通信
程序员Linc
资深技术专家,专注移动开发与人工智能领域15年+
展开
-
完成端口(iocp)的一个例子
<br /> <br />来自微软的完成端口例子,就讲解一下它的使用套路吧<br />反正编程这个玩意,只要用过,自然就知道什么回事,一次不会再看一次,学习这个玩意,无他,勤奋而已。<br />奢谈效率等等,那只是孰能生巧上的功夫。<br /> 这个例子是在console下的例子,算是一个echo服务器吧,<br /> 跑起来后将在5150端口监听,一旦有个端口连接上来,发个数据给服务端口,它就echo回数据给那个端口. 直到那个连接中断.<br /> <br /> 完成端口,其实理解成一个通道或管子转载 2010-08-25 16:02:00 · 2716 阅读 · 1 评论 -
java与c/c++进行socket通信的一些问题(1)
比如Server端只接收一个结构Employee,定义如下:struct UserInfo { char UserName[20]; int UserId;};struct Employee { UserInfo user; float salary;};当然也可以定义为struct Employee { char name[20]; int id; float salary;};java client 测试源码(为说明问题,假设struct字节对齐,sizeof(Employee)=2转载 2011-01-25 10:48:00 · 2768 阅读 · 1 评论 -
网游服务器通信架构的设计
转自:http://www.cppblog.com/jack-wang/archive/2009/01/02/70963.aspx随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长。目前,网游行业比较紧缺的是具有较深技术功底的“专家型”开发者,这主要包括两个方面:服务器端设计人员以及客户端设计人员。对于网络游戏而言,由于其主要的游戏逻辑计算是在服务器端完成的,数据同步与广播信息的传递也是通过服务器完成的,所以,是否拥有一个有经验的服务器端设计原创 2011-02-24 10:15:00 · 2793 阅读 · 1 评论 -
DES加密解密类-java
import java.security.*;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;/** * Copyright 2007 GuangZhou Cotel Co. Ltd. * All right reserved. * DES加密解密类.转载 2011-02-25 16:15:00 · 29920 阅读 · 0 评论 -
DES 加密/解密-C#
<br />using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Security;using System.Security.Cryptography;/*---------------------------------------------- * DES加密、解密类库,字符串加密结果使用BASE64编码返回,支持文件的加密和解密 *转载 2011-02-25 16:19:00 · 6271 阅读 · 0 评论 -
TCP报头相关
<br /><br />TCP协议头最少20个字节,包括以下的区域<br />TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是<br />标示报问的返回地址。<br />TCP目的端口(Destination port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算<br />机上的应用程序地址接口。<br />TCP序列号(序列码,Sequence Number):32位<br />TCP应答号(Acknowledgment Numb原创 2011-02-10 13:50:00 · 2326 阅读 · 0 评论 -
JAVA版Socket平台的设计文档
<br /> <br />1. 总体设计<br /> <br />1.1 基本设计概念和处理流程<br /> <br />1.1.1 程序划分<br /> <br />主要分为服务端和客户端两个部分。<br />客户端部分又分为同步与异步两种模式。<br />1.1.2 处理流程描述<br /> <br />JAVA版接口平台主要实现与外部接口的服务端和客户端的通讯。并提供业务接口,允许基于当前内核实现各种业务。<br />2. 平台设计思想<br /> <br />2转载 2011-05-09 09:43:00 · 2305 阅读 · 0 评论 -
socket缓冲区大小设置
系统提供的socket缓冲区大小为8K,你可以将之设置为64K,尤其在传输实时视频时。 //设置发送和接收缓冲区 int rcvbuf; int rcvbufsize=sizeof(int); if(getsockopt(m_Socket,SOL_SOCKET,SO_RCVBUF,(char*) &rcvbuf,&rcvbufsize)!=SOCKET_ERROR) { if(rcvbuf转载 2011-05-14 08:51:00 · 10639 阅读 · 1 评论 -
详解通信 C# Socket之问题
<br /><br />本文转载自:http://www.cnblogs.com/ttlin2010yeah/archive/2010/11/17/1879958.html<br /> <br />C# Socket通信三大问题是什么呢?让我们开始讲述:<br />C# Socket通信三大问题之数据包界限符问题。<br />根据原项目中交通部标准,在连续观测站中数据包中,使用﹤﹥两个字符表示有效数据包开始和结束。实际项目有各自的具体技术规范<br />C# Socket通信三大问题之数据包不连续问题。<b转载 2011-05-14 08:59:00 · 2870 阅读 · 0 评论 -
常用开源Jabber(XMPP) IM服务器介绍
<br />转自:http://www.kfdoc.com/Article/kaifayuyan/Java/200909/283.html<br /> <br />1. Openfire (Wildfire) 3.x<br />授权: GPL or 商用<br />操作系统平台:所有(使用Java开发)<br />XMPP Jabber 协议实现情况:98%<br />Tim 评价:<br />安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Jav转载 2011-05-02 16:02:00 · 7834 阅读 · 2 评论 -
Erlang不能错过的盛宴
<br /><br />本文转自网络。<br />(快步进入Erlang的世界)<br />作者:成立涛 (litaocheng@gmail.com)<br />作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”。这些正确与否,都已成过去!<br />现在,让我们迎接Erlang盛宴!一、经历<br />2007年11月在koders.com搜索代码时,发现*.erl格式的源文件,感叹开发语言的花样百出,此时,我觉得erlang是一个丑陋的小家伙,看名字就没有对它转载 2011-05-02 16:09:00 · 2045 阅读 · 0 评论 -
C#和C++结构体Socket通信(二进制流与结构体)
<br /><br />本文转自:<br />http://blog.sina.com.cn/s/blog_455332580100j1xz.html<br />1、仿照C++结构体写出C#的结构体<br /> using System.Runtime.InteropServices;<br /> [Serializable] // 指示可序列化<br /> [StructLayout(LayoutKind.Sequential, Pack = 1)] // 按1字节对齐<br />转载 2011-05-05 09:20:00 · 7779 阅读 · 2 评论 -
通过端口映射突破防火墙
<br />本文转自:http://www.csharpwin.com/csharpspace/2244.shtml<br /> <br /> <br />在我做的项目中,经常遇到一种如下形式的网络结构。<br /> <br />出于安全的考虑,server处于防火墙之后,client无法直接访问,只能通过telnet登陆到proxy server上访问。在这种方式下,就无法利用cient上的各种强大的桌面工具(如数据库客户端等),只能通过telnet的命令行形式交互,确实有些不便。<br />我们可以通过转载 2011-01-24 09:34:00 · 3141 阅读 · 0 评论 -
封包与拆包
<br />对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.<br /><br />一.为什么基于TCP的通讯程序需要进行封包和拆包.<br />TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片的,其间是没有分界线的.但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包.由于TCP"流"的特性以及网络状况,在进行数据传输时会出现以下几种情况.<br />假设我们连续调用两次send分别发送两段数据da转载 2011-01-20 16:36:00 · 3188 阅读 · 0 评论 -
Asio实现的实用echo server
关于echo的简单server,几乎多得发指,但大部分都没有提供类似粘包,定时器,安全退出等开发中的常用机制,换句话说,为了echo而echo,借鉴价值大打折扣,毕竟我们平时的工作不可能这么简单。这几天研究了下asio,感觉不错,boost接纳asio后,在服务器开发领域是不是该得到重视呢:),还是贴代码吧,有注释// asio.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//禁止boost自动链接静态库#define BOOST_ALL_DYN_LIN转载 2010-11-16 18:51:00 · 2039 阅读 · 0 评论 -
使用Socket连接穿越CMWAP代理与完整的HTTP通信步骤7步
<br /><br />使用Socket连接穿越CMWAP代理<br />在J2ME网络程序开发过程中,为了节约用户支付的网络费用,很多J2ME手机网络程序都支持CMWAP代理。<br /> 但是由于CMWAP只是中国移动建立的一个HTTP网络服务器,所以在使用HTTP网络编程中,可以很方便的使用。但是在使用socket方法操作时,这个方式好象就行不通了。<br /> 下面就介绍一下如何使用socket连接来穿越CMWAP代理。其实由于CMWAP是一个标准的HTTP代理服务器,也就是转载 2010-08-26 08:50:00 · 3648 阅读 · 0 评论 -
.NET Socket开发之同步Socket实现两例
<br />今天,我们来讲一下在。NET 网络应用程序开发中同步Socket的应用,很多人认为在网络应用的服务端Socket不应该使用同步Socket.是的,在大多数情况下是这样的,但是也有一些场景下我们使用同步Socket可能会得到更的结果。如在下面的两种场景下我们便可以考虑使用同步的Socket.<br /> 一、客户端数量比较少:<br /> 数量比较少是指会同时连接到服务器的客户端数量一般在50人以下。这种情况下我们可以考虑使用同步Socket+Thread来实现我们的服务端。这样会让我们编转载 2010-08-26 08:56:00 · 1506 阅读 · 1 评论 -
OSI七层参考模型
<br /><br />LAN和WAN的通信是由一种网络通信模型?开放系统互连( OSI )来指导的。OSI模型是两家标准化组织?国际标准化组织( ISO )和美国国家标准协会( ANSI )的产物。ISO代表了100多个国家在经济、人文、科学和技术标准上的发展,ANSI则与美国商界、政府机构和国际组织联手,建立了商业产品(包括网络和计算机产品在内)的标准。OSI模型于1974年开发,应用于LAN和WAN的通信,充分体现了为网络软件和硬件实施标准化做出的努力。多年以来,OSI模型通过以下几方面的功能促进了网转载 2010-08-25 14:57:00 · 1638 阅读 · 1 评论 -
网络基础知识笔记
<br /> <br />什么是ARP协议?<br />答:ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的M原创 2010-09-21 14:09:00 · 1488 阅读 · 3 评论 -
FTP指令
<br /> 一、前言 在 Internet 上的資源有許多種儲存方式,以大量檔案資料集中並分門別類儲存在電腦主機內,提供網路上使用者上線取用,此種方式是為 FTP 檔案傳輸,而這一台存有大量資料的電腦主機稱為檔案傳輸伺服器(FTP Server)。 在透過電話線使用 BBS 作檔案的上傳 (Upload) 與下載 (Download) 時必須經由某種特別的傳輸協定 (如Xmodem,Ymodem,Kermit等) 來達成,而兩台在 Internet 上的電腦转载 2010-10-09 11:10:00 · 3500 阅读 · 0 评论 -
呼入连接请求队列-TCP
<br />本文摘自:TCPIP详解卷1<br /> <br /><br />当服务器在创建一个新的进程时,或操作系统正忙于处理优先级更高的进程时,到达<br />多个连接请求。当服务器正处于忙时, T C P是如何处理这些呼入的连接请求?<br /> <br /><br />在伯克利的T C P实现中采用以下规则:<br />1) 正等待连接请求的一端有一个固定长度的连接队列,该队列中的连接已被T C P接受<br />(即三次握手已经完成),但还没有被应用层所接受。<br />注意区分T C P接受一个原创 2010-10-19 13:33:00 · 3502 阅读 · 2 评论 -
关于保活定时器
<br />本文摘自:TCPIP详解卷1<br /> <br /> <br /><br />许多T C P / I P的初学者会很惊奇地发现可以没有任何数据流通过一个空闲的T C P连接。也<br />就是说,如果T C P连接的双方都没有向对方发送数据,则在两个T C P模块之间不交换任何信息。<br />例如,没有可以在其他网络协议中发现的轮询。这意味着我们可以启动一个客户与服务器建<br />立一个连接,然后离去数小时、数天、数个星期或者数月,而连接依然保持。中间路由器可<br />以崩溃和重启,电话原创 2010-10-20 10:43:00 · 2948 阅读 · 0 评论 -
Socket API 分类
本文摘自:C++ Network Programming, Volume 1: Mastering Complexity with ACE and PatternsSocket API共有20多个函数,被分为5大类。1、Local context management. The Socket API provides functions to manage local context information, which is normally stored within the OS kern原创 2010-10-27 09:40:00 · 3442 阅读 · 2 评论 -
BOOST库在Windows下的配置
<br /><br />一、下载<br />首先从boost官方主页http://www.boost.org/下载最新版boost安装包(目前最新版是1.39.0)。因为 boost一部分类是需要编译成库才能使用的,所以我们还需要准备好boost专用的编译辅助工具bjam。网上很多人都提倡直接使用boost安装包中 附带的bjam源码来编译出bjam,但是之前需要修改若干配置脚本才能编译成功。个人认为真没什么必要,费这劲毫无意义。boost官方网站在提供 boost安装包下载链接的同时也提供与该版本安装包对转载 2010-10-27 16:00:00 · 9399 阅读 · 7 评论 -
ACE 的安装
<br />from:http://hi.baidu.com/erdosfish/blog/item/27b06c22bb93caa54723e8e6.html<br /><br /><br />ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005下安装ACE的过程,希望能给大家一个参考。<br />安装环境:操作系统:Windows XP 专业版编译环境:VS2005中文版ACE版本:ACE-5.5.1安装过程:下载安装包。Ace的安装文件可以在http://download.dre.van转载 2010-10-26 16:24:00 · 1982 阅读 · 0 评论 -
一个简单的自定义通信协议(socket)
转自:http://vtrtbb.javaeye.com/blog/849336这是转自javaeye的一篇文章,作者是vtrtbb。按照网络通信的传统,我们都会自定义协议,这有很多好处,大家可以自己体会(嘿嘿)。一直不知道socket通信时候自定义数据包是什么样子的,偶然做了个小例子。先来说说数据包的定义,我这里是包头+内容 组成的:其中包头内容分为包类型+包长度, 那就是 消息对象=包类型+包长度+消息体包类型 byte 型包长度 int 型消息体 byte[]包总长度为 1 + 4 + 消息体.ge转载 2010-12-31 10:50:00 · 60209 阅读 · 7 评论 -
一个TCPClient和TCPListener的例子 dotNet
真希望有时间能静下心来写几篇c#、java和c++ socket相互通信的帖子。写写它们的异同点,总结一下。下面是msdn上的一个例子,使用TCPClient来处理连接与收发,特别简单。static void Connect(String server, String message) { try { // Create a TcpClient. // Note, for this client to work you need to have a TcpServer原创 2011-05-05 13:30:00 · 6820 阅读 · 0 评论