C# socket网络编程 基于TCP协议
socket 服务器端:
1.创建socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//三个参数分别为枚举类型(网络),Socket类型,协议
2.绑定ip和端口号
IPAddress ipAddress = new IPAddress(new byte[] {192,168,119,1});
EndPoint point =new IPEndPoint(ipAddress,8811);
tcpServer .Bind(point);//绑定方法Bind(),IPEndPoint()封装ip和端口
3.开始监听
tcpServer.Listen(100);//参数为最大连接数
4.接收客户端
Socket clientSocket= tcpServer.Accept();
5.给客户端发信息
string message = "hello welcome!";
byte[] date = Encoding.UTF8.GetBytes(message);//Encoding()转码
clientSocket.Send(date);
6.接收客户端信息
byte[] date2=new byte[1024];
int length = clientSocket.Receive(date2);
string message2 = Encoding.UTF8.GetString(date2, 0, length);
Console.WriteLine("客户端发信息过来:"+message2);
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketServer
{
class Program
{
static void Main(string[] args)
{
Socket tcpServer =new Socket( AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = new IPAddress(new byte[] {192,168,191,1});
EndPoint point =new IPEndPoint(ipAddress,8811);
tcpServer .Bind(point);
tcpServer.Listen(100);
Console.WriteLine("开始监听");
Socket clientSocket= tcpServer.Accept();
Console.WriteLine("一个客户端链接过来");
string message = "hello welcome!";
byte[] date = Encoding.UTF8.GetBytes(message);
clientSocket.Send(date);
byte[] date2=new byte[1024];
int length = clientSocket.Receive(date2);
string message2 = Encoding.UTF8.GetString(date2, 0, length);
Console.WriteLine("客户端发信息过来:"+message2);
Console.ReadKey();
}
}
}
socket 客户端
1.创建socket
2.发起请求
tcpClient.Connect();
3.接收服务器端信息
4.向服务器端发信息
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketClient
{
class Program
{
static void Main(string[] args)
{
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress=new IPAddress(new byte[]{192,168,191,1});
EndPoint point =new IPEndPoint(ipAddress,8811);
tcpClient.Connect(point);
byte[] date = new byte[1024];
int length= tcpClient.Receive(date);
string message = Encoding.UTF8.GetString(date, 0, length);
Console.WriteLine("服务器端发过来的信息:"+message);
string message2 = Console.ReadLine();
tcpClient.Send(Encoding.UTF8.GetBytes(message2));
Console.ReadKey();
}
}
}
C# socket网络编程 基于TCP协议的更多相关文章
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信
TCP协议 面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端: 客户端 实例化对 ...
- C#网络编程之---TCP协议的同步通信(二)
上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...
- Java 网络编程 -- 基于TCP 模拟多用户登录
Java TCP的基本操作参考前一篇:Java 网络编程 – 基于TCP实现文件上传 实现多用户操作之前先实现以下单用户操作,假设目前有一个用户: 账号:zs 密码:123 服务端: public c ...
- 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现
一.客户端/服务器架构(C/S架构) 即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...
- JAVA基础知识之网络编程——-基于TCP通信的简单聊天室
下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发 ...
- 什么是 socket?简述基于 tcp 协议的套接字通信流程?
Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计 ...
- (网络编程)基于tcp(粘包问题) udp协议的套接字通信
import socket 1.通信套接字(1人1句)服务端和1个客户端 2.通信循环(1人多句)服务端和1个客户端 3.通信循环(多人(串行)多句)多个客户端(服务端服务死:1个客户端---&g ...
- 网络编程(基于udp协议的套接字/socketserver模块/进程简介)
一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...
随机推荐
- SVN CornerStone的使用
http://www.henishuo.com/mac-cornerstone-svn-use/
- hdu find the safest road
算法:多源最短路(floyd) 题意:每条通路有一个安全系数,求始点到终点的最大的安全系数并输出,如果没有输出What a pity! c++超时啊 Problem Description XX星球有 ...
- winPcap_6_不用回调方法捕获数据包
用 pcap_next_ex() 函数代替 _5_ 中的 pcap_loop()函数: pcap_loop()函数是基于回调的原理来进行数据捕获,这是一种精妙的方法,并且在某些场合中,它是一种很好的选 ...
- html5 新属性
<p contenteditable="true">这是一段可编辑的段落.请试着编辑该文本.</p> <input id="email&qu ...
- WordPress插件制作教程(二): 编写一个简单的插件
上一篇说到了如何创建一个插件,我想大家看了之后一定会有所收获,这一篇简单给大家写一个插件样例,让大家有一个基本的印象.这个插件的样例就是当你激活这个插件后会在你的每篇文章中插入一段自己定义好的内容,比 ...
- Lambda表达式 之 C#
Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式和语句,并且可用于创建委托 ...
- DJANTO之FORM
文档很仔细,但熟悉要慢慢来~~ from django.shortcuts import render from contact.forms import ContactForm from djang ...
- Could not find qmake configuration file win32-g++
D:\Source>c:\Qt\Qt5.3.2_static\bin\qmake -makefile -o Makefile my.proCould not find qmake configu ...
- 编译型/解释型语言,什么时候用shell
编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(obje ...
- ECharts JavaScript图表库 ECharts
ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值 ...