2024年3月24日发(作者:)
最基本的SOCKET代码
2008-08-18 22:52
今天为自己的小东西做了个基础,就是实验下SOCKET编程,好为将来网络传数
据做准备。看了N本书,发现讲SOCKET链接的都是自称一派,而且有些书讲的
很乱,我晕啊。。。。但是看这些书还是有些帮助的,因为可以筛选一下共通点,
总结一下,然后自己就可以写出来了。
首先要做的事建立SOCKET,要建立之前,我们需要用IPEndPoint来指出服务器
的IP和开放的端口号。这里有个关键的问题就是端口号。尽量不要用那些比较
经典的端口,比如80啥的,这是我遇到的第一个问题。不能重复使用,所以选
择比较偏僻的端口比较保险,不然又莫名其妙的报错了。建立好SOCKET后用循
环语句侦听端口,看有没有客户端访问进来。有的话,就要新建一个连接SOCKET
对象,调用accept()方法,使得连接被允许,然后就是传数据啦。。。其实很
简单,所有的数据以字节数组形式传送,所以发送方要对字符串进行编码,用到
了byte[] bytr=es(y) 这里的string是
你定义的字符串,即你想传的。接收方则要预先定义一个字节数组,用来存放你
要接受的数据,然后调用receive方法。客户端的其他部分和服务器类似,其实
关键是通过SOCKET建立起来链接那个部分,即制定IPEndPoint那要搞清楚客户
端和服务器端各是干什么的,该定义些什么就行。简单的代码如下:
服务器:
using System;
using c;
using ;
using ;
using s;
namespace GameServer
{
class Program
{
static void Main(string[] args)
{
Socket theConn;
IPAddress serverIp = ("192.168.1.102");
string Port = "6600";
Socket serverSocket = new
Socket(etwork, ,
);
IPEndPoint serverIpEnd = new IPEndPoint(serverIp,
(Port));
(serverIpEnd);
(100);
while (true)
{
theConn = ();
byte[] receive = new byte[1024];
int i = e(receive, 0, ble,
);
string id = ing(receive, 0, i);
(id);
();
}
}
}
}
客户端:
using System;
using c;
using entModel;
using ;
using g;
using ;
using ;
using ;
using s;
using ing;
namespace GameClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IPAddress serverIp = ("192.168.1.102");
string Port = "6600";
IPEndPoint serverhost = new IPEndPoint(serverIp,
(Port));
Socket client = new Socket(etwork,
, );
try
{
t(serverhost);
}
catch
{
("链接失败");
return;
}
string id = textBox_;
string pas = textBox_;
byte[] byteId = es(Array());
//byte[] bytePas =
es(Array());
(byteId, 0, , );
//(bytePas, 0, ,
);
();
}
}
}
好多Try,catch没加,只是试验。能把数据传到服务器了,这样就可以让服务器
从数据库里调数据了,然后再返回给客户端,这样就可以做用户验证类似的活动
了,而且游戏的数据也可以这样传,我现在是这么想的,不知道真正的大游戏是
怎么传的。。。。我没做过。先随便试下。


发布评论