C#基本的SOCKET代码
作者:网络转载 发布时间:[ 2013/11/26 14:33:31 ] 推荐标签:
首先要做的事建立SOCKET,要建立之前,我们需要用IPEndPoint来指出服务器的IP和开放的端口号。这里有个关键的问题是端口号。尽量不要用那些比较经典的端口,比如80啥的,这是我遇到的第一个问题。不能重复使用,所以选择比较偏僻的端口比较保险,不然又莫名其妙的报错了。建立好SOCKET后用循环语句侦听端口,看有没有客户端访问进来。有的话,要新建一个连接SOCKET对象,调用accept()方法,使得连接被允许,然后是传数据啦。。。其实很简单,所有的数据以字节数组形式传送,所以发送方要对字符串进行编码,用到了byte[] bytr=Encoding.ASCII.GetBytes(string.ToArray) 这里的string是你定义的字符串,即你想传的。接收方则要预先定义一个字节数组,用来存放你要接受的数据,然后调用receive方法。客户端的其他部分和服务器类似,其实关键是通过SOCKET建立起来链接那个部分,即制定IPEndPoint那要搞清楚客户端和服务器端各是干什么的,该定义些什么行。简单的代码如下:
服务器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace GameServer
{
class Program
{
static void Main(string[] args)
{
Socket theConn;
IPAddress serverIp = IPAddress.Parse("127.0.0.1");
string Port = "8001";
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverIpEnd = new IPEndPoint(serverIp, Int32.Parse(Port));
serverSocket.Bind(serverIpEnd);
serverSocket.Listen(100);
while (true)
{
theConn = serverSocket.Accept();
byte[] receive = new byte[1024];
int i = theConn.Receive(receive, 0, theConn.Available, SocketFlags.None);
//string id = Encoding.ASCII.GetString(receive, 0, i);
string id = Encoding.GetEncoding("GB2312").GetString(receive, 0, i);
Console.Write(id);
theConn.Close();
}
}
}
}
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南