socket编程好难啊,怎么学

socket编程好难啊,怎么学,第1张

socket编程一般就是Socket和WinSock。都是C语言的。C++有封装好的类。用起来就更容易一些。

感觉关于C/C++的Socket编程不是很多,不过很多讲TCP/IP的都会讲Socket,就直接学TCP/IP编程的资料好了。

入门的程序挺多的,不过感觉原理挺简单的,实际用起来挺麻烦的。

不过网络编程用Java的更多一些,用C++的感觉没有那么多。个人感觉。

可以直接用Winsock也可以用其他的图形库带的Socket。一般图形界面库都带有Socket库。

学成什么样算学会了,我就不知道了,不过我觉得你能自己做个服务器,做个小的QQ类似的通信软件,除了显示文字信息之外,彼此之间能传输、文件,就应该差不多了。

using SystemNet;
using SystemNetSockets;
static void Main(string[] args)//服务器段
{
int port = 2000;
string host = "127001";
//
///创建终结点(EndPoint)
IPAddress ip = IPAddressParse(host);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例
//
///创建socket并开始监听
Socket s = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);//创建一个socket对像,如果用udp协议,则要用SocketTypeDgram类型的套接字
sBind(ipe);//绑定EndPoint对像(2000端口和ip地址)
sListen(0);//开始监听
ConsoleWriteLine("等待客户端连接");
//
///接受到client连接,为此连接建立新的socket,并接受信息
Socket temp = sAccept();//为新建连接创建新的socket
ConsoleWriteLine("建立连接");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = tempReceive(recvBytes, recvBytesLength, 0);//从客户端接受信息
recvStr += EncodingASCIIGetString(recvBytes, 0, bytes);
//
///给client端返回信息
ConsoleWriteLine("server get message:{0}", recvStr);//把客户端传来的信息显示出来
string sendStr = "ok!Client send message successful!";
byte[] bs = EncodingASCIIGetBytes(sendStr);
tempSend(bs, bsLength, 0);//返回信息给客户端
tempClose();
sClose();
ConsoleReadLine();
}
static void Main(string[] args)//客户端
{
try
{
int port = 2000;
string host = "127001";
//
///创建终结点EndPoint
IPAddress ip = IPAddressParse(host);
//IPAddress ipp = new IPAddress("127001");
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndpoint实例
//
///创建socket并连接到服务器
Socket c = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);//创建Socket
ConsoleWriteLine("Conneting…");
cConnect(ipe);//连接到服务器
//
///向服务器发送信息
string sendStr = "hello!This is a socket test";
byte[] bs = EncodingASCIIGetBytes(sendStr);//把字符串编码为字节
ConsoleWriteLine("Send Message");
cSend(bs, bsLength, 0);//发送信息
//
///接受从服务器返回的信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = cReceive(recvBytes, recvBytesLength, 0);//从服务器端接受返回信息
recvStr += EncodingASCIIGetString(recvBytes, 0, bytes);
ConsoleWriteLine("client get message:{0}", recvStr);//显示服务器返回信息
//
///一定记着用完socket后要关闭
cClose();
}
catch (ArgumentNullException e)
{
ConsoleWriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
ConsoleWriteLine("SocketException:{0}", e);
}
ConsoleWriteLine("Press Enter to Exit");
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10750215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存