C#.Net 中使用 IP 地址和端口号的 TCP/IP 客户端套接字程序

2023-12-01

TCP/IP 客户端套接字程序。这里我的主要要求是客户端发送消息,服务器接收消息并存储在 C#.Net 的数据库表中,使用服务器 IP 地址和端口号。


您正在谈论一个简单的服务器-客户端程序。

你需要做什么。

  • 首先创建一个服务器程序并运行
  • 创建客户端并使用连接到正在运行的服务器连接(“服务器IP”,端口)
  • 现在,当客户端连接到服务器时,接收消息到服务器并使用数据库连接将该消息存储在数据库中

Guides :

  • 写入服务器-http://csharp.net-informations.com/communications/csharp-server-socket.htm

  • 写客户端-http://csharp.net-informations.com/communications/csharp-client-socket.htm

  • C# 数据库访问 [SQL] -http://csharp.net-informations.com/data-providers/csharp-sql-server-connection.htm

更新 - 根据要求和指导,这里是一个工作客户端和一个服务器

CLIENT-

    using System;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.IO;
    
    
    namespace socket_prog
    {
        class Client
        {
            private static void Main(String[] args)
            {
                byte[] data = new byte[10];
    
                IPHostEntry iphostInfo = Dns.GetHostEntry(Dns.GetHostName());
                IPAddress ipAdress = iphostInfo.AddressList[0];
                IPEndPoint ipEndpoint = new IPEndPoint(ipAdress, 32000);
    
                Socket client = new Socket(ipAdress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    
                try
                {
                    client.Connect(ipEndpoint);
    
                    Console.WriteLine("Socket created to {0}", client.RemoteEndPoint.ToString());
    
                    byte[] sendmsg = Encoding.ASCII.GetBytes("This is from Client\n");
    
                    int n = client.Send(sendmsg);
    
                    int m = client.Receive(data);
    
                    Console.WriteLine("" + Encoding.ASCII.GetString(data));
                    client.Shutdown(SocketShutdown.Both);
                    client.Close();
    
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
    
                Console.WriteLine("Transmission end.");
                Console.ReadKey();
    
            }
        }
    }

SERVER-

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace socket_prog
{
    class Server
    {
        static void Main(string[] args)
        {
            byte[] buffer = new byte[1000];
            byte[] msg = Encoding.ASCII.GetBytes("From server\n");
            string data = null;

            IPHostEntry iphostInfo = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress ipAddress = iphostInfo.AddressList[0];
            IPEndPoint localEndpoint = new IPEndPoint(ipAddress, 32000);

            ConsoleKeyInfo key;
            int count = 0;

            Socket sock = new Socket(ipAddress.AddressFamily,
                SocketType.Stream, ProtocolType.Tcp);


            sock.Bind(localEndpoint);
            sock.Listen(5);

            while (true)
            {

                Console.WriteLine("\nWaiting for clients..{0}", count);
                Socket confd = sock.Accept();

                int b = confd.Receive(buffer);
                data += Encoding.ASCII.GetString(buffer, 0, b);

                Console.WriteLine("" + data);
                data = null;

                confd.Send(msg);

                Console.WriteLine("\n<< Continue 'y' , Exit 'e'>>");
                key = Console.ReadKey();
                if (key.KeyChar == 'e')
                {
                    Console.WriteLine("\nExiting..Handled {0} clients", count);
                    confd.Close();
                    System.Threading.Thread.Sleep(5000);
                    break;
                }
                confd.Close();
                count++;
            }
        }
    }

}

首先运行服务器。然后运行客户端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#.Net 中使用 IP 地址和端口号的 TCP/IP 客户端套接字程序 的相关文章

随机推荐

  • MongoDB 更新嵌套数组

    我在 mongodb 中有一个简单的结构 带有嵌套数组 如何更新搜索值 我见过使用数字的示例 如下所示 invited 0 used true 但这不是我要搜索的内容 因为我不知道这个元素在列表中的哪个位置 所以如何将 key 为 8402
  • 不同时区的时间数组的时间戳相减

    我从其他人那里得到了以下有类似问题的代码 但提出的解决方案不适用于我的 DataFrame 该代码从给定日期中减去 Pandas DataFrame 索引 my date pd datetime today MyDF day differe
  • iOS 10 collectionView:prefetchItemsAt 未调用

    我正在尝试新的collectionView prefetchItemsAt and collectionView cancelPrefetchingForItemsAt的方法UICollectionViewDataSourcePrefetc
  • 当 Collection 数据源更新时更新 ListView

    我有 ListView 我将其绑定到 Dictionary 集合 但是新的新项目添加到集合中 列表视图没有更新 在 WPF 中如何实现这一点 WPF 绑定双方都应该支持INotifyCollectionChanged接口以通知集合更改 词典
  • opencv-tkinter 集成中视频闪烁

    我正在尝试通过将 opencv 组件集成到程序中 在 Windows 8 上的 Python 3 6 4 64 位中使用 tkinter 构建 GUI 我可以播放视频 但出现明显的闪烁 也就是说 与本机 tkinter 背景颜色相同的屏幕每
  • 使用 $.ajax 调用服务器端函数

    最终 我想通过单击按钮将值发送到服务器并查询我的数据库 目前 我在使用 jquery ajax 调用服务器端的函数时遇到问题 这是我的代码
  • PDO fetchObject() 在 fetchall() 之后。返回错误

    我是 PHP 新手 我正在尝试以表格的形式显示员工的详细信息 但while row result gt fetchObject 部分没有执行 因为 result gt fetchObject 返回 false 有什么关系吗 rows res
  • Python:删除除一个for循环之外的所有变量而不受到污染

    reset reset f and reset selective a reset selective f a 是 Matlab 命令 清除所有 的有用 Python 替代品 其中 f 表示 强制而不要求确认 selective 可以与 w
  • Python 3.5 ImportError:动态模块未定义模块导出函数(PyInit_cv2)

    这就是我尝试将 cv2 导入 python3 5 IDLE 时得到的结果 我正在使用 OpenCV 3 1 0 Python3 5 2 Ubuntu 16 04 我尝试了很多安装方法 但没有人解决我的问题 我在终端上进行了导入 但它也停止了
  • 我想捕获所有没有特定标签的标签

    我想捕获我可以使用的所有名为 STRONG 的标签
  • 在响铃期间更改响铃音量

    我想在响铃时更改响铃音量 下面的代码在响铃期间设置它 在系统设置中更改 但它不会在实际响铃时生效 只有下一个响铃呼叫才会使用新值 我可以强制此更改使其立即生效吗 AudioManager audio AudioManager context
  • 在 Java 中通过一次调用(如 JSON.stringify)打印整个结构?

    如何在Java中打印任何类实例 类似于 Javascript 中的 JSON stringify 不需要 JSON 任何格式的输出都可以 public class User public String name password publi
  • PHP旋转和合并时的图像质量问题

    当我合并两个图像作为一个背景 另一个作为目标图像时 我正在使用 png 当我旋转目标图像然后合并时 是的 一切都很好 除了旋转图像的边缘变得锯齿形 我的意思是不平滑 如何使用php GD使边缘平滑 我正在使用的代码
  • 如何公开嵌套在 UserControl 中的控件的 DependencyProperty?

    我正在尝试将图像从窗口绑定到用户控件 显示处理程序 内的用户控件 显示 中 显示有一个 DependencyProperty DisplayImage 这类似于this 但他们的回答对我的问题没有帮助 DisplayHandler 还应该具
  • AppFabric 客户端虚拟机问题

    我们有 AppFabric 缓存集群服务器 我可以使用我的开发计算机作为客户端来使用它 为了模拟不同的Web服务器访问缓存集群服务器 我创建了VMWare虚拟机并安装了Visual Studio 2010和我的Web应用程序 从虚拟机作为客
  • 我可以从 Tomcat 上下文设置 JDBC 隔离级别吗?

    我有一个在 Tomcat 6 中运行的 Web 应用程序 并且我已设法将其配置为使用内置 DBCP 连接池 并且一切都运行良好 但我怀疑它在数据库上的错误隔离级别中运行 我希望它以未提交读的方式运行 但我认为它以已提交读的方式运行 并且不知
  • GtkWindow 一次只能包含一个小部件

    我正在使用此代码来检索并显示来自网络的图像 class Display object def init self self window gtk Window gtk WINDOW TOPLEVEL self window connect
  • 当mapoverlay可见时隐藏mapview ios7

    当 iOS7 中的地图视图顶部有覆盖层时 如何隐藏地图视图 这段代码曾经在 iOS6 中工作 但是当我将我的应用程序升级到 iOS7 时 它停止工作 NSArray views self mapView subviews objectAtI
  • 带有页脚的 Recyclerview 无法删除最后一项

    我在用带页脚的回收视图一切正常 但我无法删除最后一项 假设我们现在列表中有 2 个产品 如果用户删除一个产品 那么 1 个产品将保留在列表中recyclerview那么我无法删除剩余的产品 虽然我有一件商品 但它显示 PACK ID nul
  • C#.Net 中使用 IP 地址和端口号的 TCP/IP 客户端套接字程序

    TCP IP 客户端套接字程序 这里我的主要要求是客户端发送消息 服务器接收消息并存储在 C Net 的数据库表中 使用服务器 IP 地址和端口号 您正在谈论一个简单的服务器 客户端程序 你需要做什么 首先创建一个服务器程序并运行 创建客户