• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
keerting
博客园    首页    新随笔    联系   管理    订阅  订阅
02 2012 档案
基于tcp开发—多线程

摘要:多线程问题:多线程过程的参数与返回值在基于控件开发多线程应用过程中要分清各自的线程,ui线程控制响应用户操作和界面变化,如果用ui线程执行其他操作,那么界面接回卡住。那么其他操作就应该另启线程进行运行,然而线程之间经常需要参数传递,比如把其他操作的参数显示到界面上,这时就要搞清楚什么操作由哪条线程控制。在多线程应用程序中提供和返回值是很复杂的,因为必须将对某个过程的引用传递给线程类的构造函数,该过程不带参数也不返回值。为多线程过程提供参数 :为多线程方法调用提供参数的最好办法是将目标方法包裹在类中,并为该类定义字段,这些字段将被用作新线程的参数。这种方法的优点是,任何时候想要启动新线程,都可以 阅读全文
posted @ 2012-02-08 16:13 keerting 阅读(487) 评论(0) 推荐(0)
基于tcp开发—异步机制

摘要:前面关于socket的编程,全部是基于同步机制开发的服务器和客户端,线程会进入阻塞或者挂起状态,降低线程利用率,同时程序影响效率。因此,向tcp程序引入异步回调:在异步套接字完成网络操作后,线程没有被阻塞或者挂起,接着通过调用回调函数处理后续网络操作。而主线程继续执行,以实现并行执行的结果。为什么要引入异步机制?看到过一个解释。当我们打开一个程序时,鼠标不停地转但是就是不见界面跳转,这是其他耗时操作阻碍了ui线程,造成ui线程不能响应用户操作。如果引用异步机制,ui线程在发起耗时操作之后马上回来响应用户操作,把能响应的都给用户,最后等耗时操作结束,通过回调来处理耗时操作的结果。这就是异步机制能 阅读全文
posted @ 2012-02-06 21:59 keerting 阅读(289) 评论(1) 推荐(0)
关于socket编程(续2)——解决tcp无保护消息边界问题

摘要:tcp和udp都是以字节流形式传输数据,所以多个数据包之间是无保护消息边界的。因此必须把要传输的数据的大小在数据传输之前就发给客户端,以使客户端能开辟足够大的数据缓冲区。于是必须重写数据发送方法send和数据接收方法recieve。另外在传输其他类型的数据(如数据长度)时,都要经过格式转换。 阅读全文
posted @ 2012-02-05 21:18 keerting 阅读(352) 评论(0) 推荐(0)
关于socket编程(续1)——多线程解决同时响应多客户机请求的问题

摘要:继续昨天的例子,这里将单线程提升到多线程。服务器端的业务逻辑:创建套接字server,与本地终结点绑定,监听3000端口;accept把客户端套接字传递给套接字client;定义一个方法,用echo技术处理client(注意这个方法能对客户端套接字响应,当客户端断开连接时也将client断开);申请一个线程,把该方法委托给线程,并启动线程。客户端逻辑:创建套接字client,与本地终结点绑定,监听3000端口;定义用户输入两种情况:exit表示断开与服务器套接字连接;其他信息表示与服务器通信,显示服务器的响应信息。这样在服务器端,一条线A程专门用来监听客户端连接申请,把收到的客户端套接字传递给 阅读全文
posted @ 2012-02-04 19:39 keerting 阅读(426) 评论(0) 推荐(0)
关于socket编程——一台机子上客户端与服务器通信实现

摘要:客户端代码socketclient.cs如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;namespace socketclient{ class socketclient {static void Main(string[] args) { Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, P 阅读全文
posted @ 2012-02-03 15:22 keerting 阅读(1638) 评论(1) 推荐(0)

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3