C# Socket通信的服务器与客户端
客户端代码:
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通信的服务器与客户端的更多相关文章
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
- socket,实现服务器和客户端对话
服务器: #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string>#include<WinSock ...
- Socket创建简单服务器和客户端程序
使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...
- socket 通信 入门3 android 客户端 C# 服务端
这是一个android端操控服务器的例子 就是发送简单指令到服务器 然后服务器响应什么的... 当然这里是未完成的 只是简单展示一下大致思路 首先连接建立起来后 服务端给客户端一条信息 告诉 ...
- 实现服务器和客户端数据交互,Java Socket有妙招
摘要:在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket. 本文分享自华为云社区<Java Socket 如何实现服务器和客户端数据交互>, ...
- 线程间使用socket通信的计算器
该程序是处理平时的算数运算,程序也没有什么特别之处,只是将所有运算分开运算,每个函数(线程)处理不同的运算符号里面的运算,然后将所有结果都汇总到main函数中进行最后汇总(相加减)运算,每个函数内都处 ...
- 界面编程之QT的Socket通信20180730
/*******************************************************************************************/ 一.linu ...
- windows phone 8.1开发:socket通信聊天
本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...
随机推荐
- 2017.9.24 JSP动态页面
1.1 JSP(Java Server Page)是一种运行在服务器端的脚本语言,用来开发动态网页的开发技术. 1.2 JSP页面的结构 JSP页面主要由HTML和JSP代码构成,JSP代码是通过&q ...
- 【转】基于JavaMail的Java邮件发送
http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...
- .clone事件当你克隆的时候,DOM节点是克隆出来了,但是克隆出来的节点不能运行时事件 ...
解决办法如下在clone()里面加个参数true,即可完成事件的植入.即:.clone(true).clone( [ withDataAndEvents ], [ deepWithDataAndEve ...
- cuda数组的拷贝
原文链接 简单描述一下自己要做的事情:(1)CPU三维的vector--->(2)CPU三维数组--->(3)转换到GPU中的三维数组--->(4)转换到CPU中的三维数组,而其中问 ...
- 前端jQuery基本语法
1.概念 1.1基础知识 jQuery是一个兼容多浏览器的JavaScript库,封装了开发过程中常用的一些功能,类似Python模块 jQuery就是用JS写的,JS是基础 jQuery写起来简单, ...
- SVProgressHUD–比MBProgressHUD更好用的 iOS进度提示组件
简介 SVProgressHUD是简单易用的显示器,用于指示一个持续进行的任务的进度. 项目主页: SVProgressHUD 最新示例: 点击下载 快速入门 安装 通过Cocoapods pod ' ...
- 学习vue-cli3的项目搭建
安装 关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli(1.x 或 2.x),你需要先通过 npm uninstall ...
- ES6初识-模块化
export let A=123; export function test(){ console.log('test'); } export class Hello(){ test(){ conso ...
- UVA_1434_YAPTCHA
The math department has been having problems lately. Due to immense amount of unsolicited automated ...
- DB设计工具——dbschema
Preface I've got a db design job about meeting room booking system last week.There're many s ...