客户端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ClientSocket
{
class Program
{
private static byte[] result = new byte[];
static void Main(string[] args)
{
//设定服务器IP地址
IPAddress ip = IPAddress.Parse("127.0.0.1");
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
clientSocket.Connect(new IPEndPoint(ip, )); //配置服务器IP与端口
Console.WriteLine("连接服务器成功");
}
catch
{
Console.WriteLine("连接服务器失败,请按回车键退出!");
return;
}
for (int i = ; i < ; i++)
{
try
{
Thread.Sleep(); //等待1秒钟
string sendMessage = "client send Message Hellp" + DateTime.Now;
clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
Console.WriteLine("向服务器发送消息:{0}" + sendMessage);
}
catch
{
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
break;
}
}
Console.WriteLine("发送完毕,按回车键退出");
Console.ReadLine();
}
}
}

服务器端代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using LogHelper;
using System.IO;
using System.Diagnostics;
namespace SocketForm
{
class SocketConnection
{
private int port;//监听端口号
private static byte[] result = new byte[];
private static Socket server;//服务器Socket
private IPAddress ip;//Ip地址
private static Socket client;//客户端Socket
private static Thread myThread;//启动监听线程
private static Thread receiveThread;//接收数据线程
public SocketConnection(string ipadr,int port)
{
this.port = port;//初始化端口
ip = IPAddress.Parse(ipadr);//初始化ip地址 }
public void setConnection()
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//实例化socket对象(采用网络流传输方式,TCP协议传输)
server.Bind(new IPEndPoint(ip, port));//绑定ip及端口
Console.WriteLine("绑定端口ip"+this.ip+":"+this.port);
server.Listen();//监听端口
Console.WriteLine("正在监听IP"+this.ip+" 端口:"+this.port+"......");
Log.Errorname = "Info";
Log.CreateLogTxt("监听Ip"+this.ip+"端口"+this.port+"......");
myThread = new Thread(ListenClientConnect);
myThread.Start();
} private static void ListenClientConnect()
{
while (true)
{
client = server.Accept();
receiveThread = new Thread(ReceiveMessage);
receiveThread.Start(client);
}
} /// <summary>
/// 接收消息
/// </summary>
/// <param name="clientSocket"></param>
private static void ReceiveMessage(object clientSocket)
{ client = (Socket)clientSocket;
while (true)
{
try
{
//通过clientSocket接收数据
int receiveNumber = client.Receive(result);//获取接收数据的长度
StreamWriter resultMessage = new StreamWriter("out.txt", true);//输出流实例化
resultMessage.WriteLine("接收客户端{0}消息{1}", client.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, , receiveNumber));
resultMessage.Close();
Log.Errorname = "Info";
Log.CreateLogTxt("信息获取成功");
Console.WriteLine("信息获取成功");
}
catch (Exception ex)
{
Log.Errorname = "ERROR";
Log.CreateLogTxt("从服务器获取数据错误"+"错误信息"+ex.Message);
Console.WriteLine("从服务器获取数据错误" + "错误信息" + ex.Message);
client.Shutdown(SocketShutdown.Both);
client.Close();
break;
}
}
} }
}

C# Socket通信的服务器与客户端的更多相关文章

  1. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  2. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  3. socket,实现服务器和客户端对话

    服务器: #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string>#include<WinSock ...

  4. Socket创建简单服务器和客户端程序

    使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...

  5. socket 通信 入门3 android 客户端 C# 服务端

    这是一个android端操控服务器的例子  就是发送简单指令到服务器  然后服务器响应什么的... 当然这里是未完成的  只是简单展示一下大致思路 首先连接建立起来后  服务端给客户端一条信息  告诉 ...

  6. 实现服务器和客户端数据交互,Java Socket有妙招

    摘要:在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket. 本文分享自华为云社区<Java Socket 如何实现服务器和客户端数据交互>, ...

  7. 线程间使用socket通信的计算器

    该程序是处理平时的算数运算,程序也没有什么特别之处,只是将所有运算分开运算,每个函数(线程)处理不同的运算符号里面的运算,然后将所有结果都汇总到main函数中进行最后汇总(相加减)运算,每个函数内都处 ...

  8. 界面编程之QT的Socket通信20180730

    /*******************************************************************************************/ 一.linu ...

  9. windows phone 8.1开发:socket通信聊天

    本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...

随机推荐

  1. 2017.11.8 面向对象分析与设计(UML)---UML的作用及分类

    用到的工具 startUML 一些界面操作的说明 蓝色框是用来选择形状的,特别是接口的时候 UML有什么用? `` 有很多人认为,UML的主要用途就是软件设计!也有人认为,如果你不是开发人员,是难以理 ...

  2. Mac安装protobuf 流程

    下载 https://github.com/google/protobuf/releases 找到对应版本下载 编译 cd protobuf./autogen.sh./configuremake 安装 ...

  3. BCB:如何在BCB中使用CodeGuard

    www.educity.cn 发布者:xjxyj2006 来源:网络转载 发布日期:2013年12月13日 文章评论 发表文章 一. 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东 ...

  4. jQuery对表单、表格的操作以及更多应用

    表单和表格都是HTML的重要组成部分,分别用于采集.提交用户输入的信息和显示列表数据. 表单应用:一个表单有3个基本组成部分: ①表单标签:包含处理表单数据所用的服务器端程序URL以及数据提交到服务器 ...

  5. 使用Mac的过程中的一些小操作

    前言:使用Mac的过程中的一些小操作 查看Mac系统是32位还是64位: 方法1: 点击左上角的苹果按钮->关于本机->概览->系统报告->软件->偏好设置面板:右侧有提 ...

  6. python的**和*

    1.**两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16一个乘号*,如果操作数是两个数字,就是这两个数字相乘,如2*4,结果为8*如果是字符串.列表.元组与一个整数N相乘,返回一个其所有 ...

  7. 修改与遍历MAP

    package com.*; import java.util.*; /** * Created by HP on 2018/8/2. */ public class Test { //定义一个用于转 ...

  8. JQuery 过滤选择器 与属性修改的方法演示比较

    文本匹配 在表单输入项里面输入值,根据输入值,点击判断按钮,让对应的复选框选中 <html> <head> <meta http-equiv="Content- ...

  9. 没有CTO的Netflix有哪些值得我们学习的工程文化?

    作者介绍: 杨波,拍拍贷基础框架研发总监.具有超过 10 年的互联网分布式系统研发和架构经验,曾先后就职于:eBay 中国研发中心(eBay CDC),任资深研发工程师,参与亿贝开放 API 平台研发 ...

  10. Thymeleaf显示Map集合数据

    <select class="form-control zz-set-input-size" id="channel"> <option va ...