C# Socket服务端和客户端互相send和receive

服务端

1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Net.Sockets;
 5 using System.Net;
 6 using System.Threading;
 7 
 8 namespace Controller
 9 {
10     public static class SocketServer
11     {
12         private static byte[] result = new byte[1024];
13         private static int myProt = 6000;   //端口
14         private static Socket serverSocket;
15         private static List<Socket> clientSockets=new List<Socket>();
16         public static void Init()
17         {
18             //服务器IP地址
19             IPAddress ip = IPAddress.Parse("127.0.0.1");
20             serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
21             serverSocket.Bind(new IPEndPoint(ip, myProt));  //绑定IP地址:端口
22             serverSocket.Listen(10);    //设定最多10个排队连接请求
23             Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
24             //通过Clientsoket发送数据
25             Thread myThread = new Thread(ListenClientConnect);
26             myThread.Start();
27             Console.ReadLine();
28         }
29 
30         /// <summary>
31         /// 监听客户端连接
32         /// </summary>
33         private static void ListenClientConnect()
34         {
35             while (true)
36             {
37                 Socket clientSocket = serverSocket.Accept();
38                 clientSockets.Add(clientSocket);
39                 Thread receiveThread = new Thread(ReceiveMessage);
40                 receiveThread.Start(clientSocket);
41             }
42         }
43 
44         /// <summary>
45         /// 接收消息
46         /// </summary>
47         /// <param name="clientSocket"></param>
48         private static void ReceiveMessage(object clientSocket)
49         {
50             Socket myClientSocket = (Socket)clientSocket;
51             while (true)
52             {
53                 try
54                 {
55                     //通过clientSocket接收数据
56                     int receiveNumber = myClientSocket.Receive(result);
57                     string strContent = Encoding.ASCII.GetString(result, 0, receiveNumber);
58                     Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
59                 }
60                 catch (Exception ex)
61                 {
62                     Console.WriteLine(ex.Message);
63                     myClientSocket.Shutdown(SocketShutdown.Both);
64                     myClientSocket.Close();
65                     break;
66                 }
67             }
68         }
69 
70         public static void SendMessage(string message)
71         {
72             foreach(Socket clientSocket in clientSockets)
73                 clientSocket.Send(Encoding.ASCII.GetBytes(message));
74         }
75     }
76 }

客户端

1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Net.Sockets;
 5 using System.Net;
 6 using System.Threading;
 7 
 8 namespace Player
 9 {
10     public static class SocketClient
11     {
12         private static Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
13         private static byte[] result = new byte[1024];
14         public static void Init()
15         {
16             //设定服务器IP地址
17             IPAddress ip = IPAddress.Parse("127.0.0.1");            
18             try
19             {
20                 clientSocket.Connect(new IPEndPoint(ip, 6000)); //配置服务器IP与端口
21                 Console.WriteLine("连接服务器成功");
22             }
23             catch
24             {
25                 Console.WriteLine("连接服务器失败,请按回车键退出!");
26                 return;
27             }
28 
29             Thread receiveThread = new Thread(ReceiveMessage);
30             receiveThread.Start();
31             
32         }
33         /// <summary>
34         /// 接收消息
35         /// </summary>
36         /// <param name="clientSocket"></param>
37         private static void ReceiveMessage()
38         {            
39             while (true)
40             {
41                 try
42                 {
43                     //通过clientSocket接收数据
44                     int receiveNumber = clientSocket.Receive(result);
45                     string strContent = Encoding.ASCII.GetString(result, 0, receiveNumber);
46                     Console.WriteLine("接收服务端{0}消息{1}", clientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
47                 }
48                 catch (Exception ex)
49                 {
50                     Console.WriteLine(ex.Message);
51                     clientSocket.Shutdown(SocketShutdown.Both);
52                     clientSocket.Close();
53                     break;
54                 }
55             }
56         }
57         public static void SendMessage(string message)
58         {
59             string sendMessage = message;
60             clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
61         }
62     }
63 }

C# Socket服务端和客户端互相send和receive,布布扣,bubuko.com

时间: 2024-08-24 07:17:06

C# Socket服务端和客户端互相send和receive的相关文章

socket服务端和客户端

#!/usr/bin/env python#encoding: utf-8import socketdef handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, World") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREA

C# Socket服务端与客户端通信(包含大文件的断点传输)

步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收信息   (3)发送数据(这里分发送字符串.文件(包含大文件).震动) 二.客户端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收信息   (3)发送数据(这里分发送

Java网络编程【Socket服务端和客户端】

Socket 编程大家都不陌生,Java 学习中必学的部分,也是 Java网络编程核心内容之一.Java 网络编程又包括 TCP.UDP,URL 等模块.TCP 对应 Socket模块,UDP 对应 DatagramPacket 模块.URL 对应 URL 模块.其中 TCP 和 UDP 是网络传输协议,TCP 是数据流传输协议,UDP 是数据包传输协议.两者之间的异同就不在这里说了,推荐一本入门书籍 <TCPIP入门经典>.我们开始 Socket 服务端和客户端编程吧. 一.Socket 服

Socket——服务端与客户端交互的简单实现

服务端: package 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.ServerSocket; import java.net.Socke

socket系列之socket服务端与客户端如何通信

上面已经分别介绍了ServerSocket跟Socket的工作步骤,并且从应用层往系统底层剖析其运作原理,我们清楚了他们各自的一块,现在我们将把他们结合起来,看看他们是如何通信的,并详细讨论一下他们之间相互通信的一些细节. 借助图2-3-2-4,想象一下你正在大学课室上着电脑,你跟你另外两个朋友觉得老师讲得课很菜,没必要听,于是你们仨都各自打开浏览器冲浪,刚好你们访问了同一台服务器,假如你用的是浏览器A,那么整个流程为: ① 浏览器确认目标IP跟目标端口号(http默认使用80端口),当然如果你

golang的socket服务端与客户端

服务端 服务端的处理流程 监听端口 接收客户端的链接 创建goroutine,处理该链接 package main import ( "fmt" "net" ) func main() { fmt.Println("start server...") listen, err := net.Listen("tcp", "0.0.0.0:50000") if err != nil { fmt.Println(&

Socket服务端和客户端(C++,CodeBlocks+GCC编译)

//main.cpp 1 #include "j_socket.h" 2 #include <stdio.h> 3 #include <pthread.h> 4 static int port=21; 5 j_server* ser; 6 void* main_listen( void* args) 7 { 8 ser=new j_server(port); 9 ser->j_listen(); 10 } 11 int main() 12 { 13 sta

Android—Socket服务端与客户端用字符串的方式互相传递图片

发送图片: 首先找到具体传递的图片: private Bitmap getimage(String srcPath) { BitmapFactory.Options newOpts = new BitmapFactory.Options(); // 开始读入图片,此时把options.inJustDecodeBounds 设回true了 newOpts.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile(srcP

java中socket创建服务端与客户端即时对聊

package tool; 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.ServerSocket; import java.net.Socket; impo