C#socket通信-----多线程

我在之前的socket通信的基础上做了一点改进,使用多线程来使用,程序更加简洁实用。不足之处请指教哦!

话不多说,之前的随笔也有介绍,直接上代码啦!

服务端socket(serverSocket):

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Net;
 7 using System.Threading;
 8 using System.Net.Sockets;
 9
10 namespace serverSocketTest6
11 {
12     class Program
13     {
14         static Socket serverSocket;
15         static int port = 2723;
16
17         static void Main(string[] args)
18         {
19             Console.WriteLine("服务端:");
20
21             //实例化socket类
22             serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
23             IPAddress ip = IPAddress.Parse("173.168.5.15");
24             //标识网络地址
25             EndPoint point = new IPEndPoint(ip,port);
26             //绑定IP地址和端口号
27             serverSocket.Bind(point);
28
29             //开始监听客户端的连接
30             serverSocket.Listen(10);
31             Console.WriteLine("等待客户端连接...");
32
33             Thread myThread = new Thread(ListenClientSocket);
34             myThread.Start();
35
36
37             Console.ReadKey();
38
39
40
41         }
42
43         /// <summary>
44         /// 监听客户端
45         /// </summary>
46         static void ListenClientSocket()
47         {
48             while (true)
49             {
50                 Socket clientSocket = serverSocket.Accept();//接受客户端的连接
51                 Console.WriteLine("客户端连接成功");
52
53                 string message = "2017,新的开始,新年快乐!加油!继续努力!!!";
54                 byte[] data=Encoding.UTF8.GetBytes(message);
55                 clientSocket.Send(data);
56
57                 Thread receive = new Thread(receiveSocket);//receiveSocket 被传递的方法
58                 receive.Start(clientSocket); //clientSocket 被传递的参数
59             }
60
61         }
62
63         /// <summary>
64         /// 接收来自客户端的消息
65         /// </summary>
66         static void receiveSocket(object clientSocket)  //////  这里的参数是线程中的参数,参数类型必须是object类型
67         {
68             Socket myClientSocket = (Socket)clientSocket;  //// 将object类型的参数转换成socket类型  使用参数来启动线程,执行后面的代码
69             while (true)
70             {
71                 byte[] data=new byte[1024];
72                 int length = myClientSocket.Receive(data);
73                 string message=Encoding.UTF8.GetString(data,0,length);
74                 Console.WriteLine("接收到来自客户端的消息:"+message);
75
76
77             }
78         }
79     }
80 }

客户端的代码基本没变~

客户端socket(clientSocket):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Threading;
using System.Net.Sockets;

namespace clientSocketTest6
{
    class Program
    {
        static Socket clientSocket;
        static int port = 2723;

        static void Main(string[] args)
        {
            Console.WriteLine("客户端:");

            //实力化一个socket类
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPAddress ip = IPAddress.Parse("173.168.5.15");

            //客户端请求与服务端的连接
            clientSocket.Connect(ip, port);
            Console.WriteLine("服务器连接成功.");

            //接受数据
            byte[] data = new byte[1024];
            int length = clientSocket.Receive(data);
            string message = Encoding.UTF8.GetString(data, 0, length);

            Console.WriteLine("接受到来自服务端的祝福:" + message);

            //向服务端发送数居
            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(2000);//使该线程暂停(休眠)2s
                string message2 = "Fighting!!"; //可以写成string message2=Console.ReadLine();
                byte[] data2 = Encoding.UTF8.GetBytes(message2);
                clientSocket.Send(data2);
                Console.WriteLine("向服务端发送消息:{0}",message2);

            }
            Console.ReadKey();

        }
    }
}
时间: 2024-11-02 21:26:10

C#socket通信-----多线程的相关文章

Delphi Socket通信及多线程编程总结

http://cxhblog.blog.sohu.com/41930676.html 一.Socket通信: Delphi在ScktComp单元中对WinSock进行了封装,该单元提供了TAbstractSocket.TClientSocket.TClientWinSocket.TCustomSocket.TCustomWinSocket.TCustomServerSocket .TServerClientThread.TServerWinSocket.  TServerClientWinSoc

基于多线程的TCP socket通信经典案例

服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; /** *

python的socket通信实例

一.socket简介 1. 套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象. 它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要. 套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳. 许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供

C# 如何实现简单的Socket通信(附示例)

上周由于有个项目需要用到网络通信这块,然后就花了点时间研究了一下,本来想上周就写出来的,但是突然要忙,所以等到现在. 话说对于网络通信,以前写C++的时候,天天面对着线程和Socket,所以换成C#也就没那么怕了,虽然C++下也没有掌握的多好,但毕竟只是一个小Demo,只作为了解一下过程. 自己写了一个服务端和一个客户端,刚开始比较简单,只是能达到连通,收发信息的目的,但是很粗糙.而后稍加改进呢~加上了多线程,所以能感觉更科学一些,不过自己真的很菜,代码写的不是很好看,下面分两个版本给大家表出来

【Java】Java Socket 通信示例

用socket(套接字)实现客户端与服务端的通信. 这里举两个例子: 第一种是每次客户端发送一个数据,服务端就做一个应答.(也就是要轮流发) 第二种是客户端可以连续的向服务端发数据,服务端也可以连续向客户端发数据.(多线程) 为了方便起见,客户端服务端都放在一个主机上,分别开两个进程[哈哈,进程间通信lol~] PS: 一个聊天程序雏形 代码也放在GitHub上了:https://github.com/MummyDing/socketChatDemo Demo 1: 简单的Socket通信,一人

Java 和 Python 的 Socket 通信

网络上两个程序通过一个双向通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket支持的协议有多种,这里主要介绍基于 TCP/IP 协议族的 Socket 编程. 首先,IP协议族决定了socket的地址类型,在通信中必须采用对应的地址.AF_INET(AF 表示 Adress Family)表示要用 ipv4 地址(32位)与端口号(16位)的组合. 然后,根据传输协议又分为:流式 Socket(SOCK_STREAM) 和数据报式 Socket(SOCK_DGRAM):

【Java】Java Socket 通信演示样例

用socket(套接字)实现client与服务端的通信. 这里举两个样例: 第一种是每次client发送一个数据,服务端就做一个应答. (也就是要轮流发) 另外一种是client能够连续的向服务端发数据,服务端也能够连续向client发数据.(多线程) 为了方便起见,client服务端都放在一个主机上.分别开两个进程[哈哈,进程间通信lol~] PS: 一个聊天程序雏形 代码也放在GitHub上了:https://github.com/MummyDing/socketChatDemo Demo

HP-Socket国产优秀socket通信组件推荐

来源:http://blog.csdn.net/clb929/article/details/51085983 * HP-Socket 官方网站:http://www.jessma.org * HP-Socket 项目主页:http://www.oschina.net/p/hp-socket * HP-Socket 开发文档:http://www.oschina.net/p/hp-socket/doc * HP-Socket 源代码下载地址:https://github.com/ldcsaa/H

于TCP协议的socket通信

基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤: 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 多线程服务器 多线程用来实现 服务器与多客户端之间的通信 基本步骤 1 服务器创建serverSocket,循环调用accept()等待客户端连接 2 客户端创建一个scoket并请求和服务器端连接 3 服务器端接收客户端请求,创建socket与该客户建立专线连接 4 建立