客户端和服务端的socket编程(用socket实现客户端与服务端通信)

      最后更新:2023-04-21 01:45:07 手机定位技术交流文章

      socket编程怎么写一个客户端和两个服务端

      网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 下面用Socket实现一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159【服务器端】#include "stdafx.h"#include #include #include #define SERVER_PORT 5208 //侦听端口void main(){WORD wVersionRequested;WSADATA wsaData;int ret, nLeft, length;SOCKET sListen, sServer; //侦听套接字,连接套接字struct sockaddr_in saServer, saClient; //地址信息char *ptr;//用于遍历信息的指针//WinSock初始化wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本ret=WSAStartup(wVersionRequested, &wsaData);if(ret!=0){printf("WSAStartup() failed!n");return;}//创建Socket,使用TCP协议sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sListen == INVALID_SOCKET){WSACleanup();printf("socket() faild!n");return;}//构建本地地址信息saServer.sin_family = AF_INET; //地址家族saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址//绑定ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer));if (ret == SOCKET_ERROR){printf("bind() faild! code:%dn", WSAGetLastError());closesocket(sListen); //关闭套接字WSACleanup();return;}//侦听连接请求ret = listen(sListen, 5);if (ret == SOCKET_ERROR){printf("listen() faild! code:%dn", WSAGetLastError());closesocket(sListen); //关闭套接字return;}printf("Waiting for client connecting!n");printf("Tips: Ctrl+c to quit!n");//阻塞等待接受客户端连接while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。{length = sizeof(saClient);sServer = accept(sListen, (struct sockaddr *)&saClient, &length);if (sServer == INVALID_SOCKET){printf("accept() faild! code:%dn", WSAGetLastError());closesocket(sListen); //关闭套接字WSACleanup();return;}char receiveMessage[5000];nLeft = sizeof(receiveMessage);ptr = (char *)&receiveMessagewhile(nLeft>0){//接收数据ret = recv(sServer, ptr, 5000, 0);if (ret == SOCKET_ERROR){printf("recv() failed!n");return;}if (ret == 0) //客户端已经关闭连接{printf("Client has closed the connectionn");break;}nLeft -= ret;ptr += ret;}printf("receive message:%sn", receiveMessage);//打印我们接收到的消息。}//closesocket(sListen);//closesocket(sServer);//WSACleanup();}【客户端】#include "stdafx.h"#include #include #include #define SERVER_PORT 5208 //侦听端口void main(){WORD wVersionRequested;WSADATA wsaData;int ret;SOCKET sClient; //连接套接字struct sockaddr_in saServer; //地址信息char *ptr;BOOL fSuccess = TRUE;//WinSock初始化wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本ret = WSAStartup(wVersionRequested, &wsaData);if(ret!=0){printf("WSAStartup() failed!n");return;}//确认WinSock DLL支持版本2.2if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2){WSACleanup();printf("Invalid WinSock version!n");return;}//创建Socket,使用TCP协议sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient == INVALID_SOCKET){WSACleanup();printf("socket() failed!n");return;}//构建服务器地址信息saServer.sin_family = AF_INET; //地址家族saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序saServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.127");//连接服务器ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer));if (ret == SOCKET_ERROR){printf("connect() failed!n");closesocket(sClient); //关闭套接字WSACleanup();return;}char sendMessage[]="hello this is client message!";ret = send (sClient, (char *)&sendMessage, sizeof(sendMessage), 0);if (ret == SOCKET_ERROR){printf("send() failed!n");}elseprintf("client info has been sent!");closesocket(sClient); //关闭套接字WSACleanup(); }
      socket编程怎么写一个客户端和两个服务端

      在做java的socket编程的时候碰到了问题,就是实现简单的客户端和服务器端相互发送文件的例子,具体如下

      // server,同时注意socket的close server=new ServerSocket(PORT);client=server.accept();// client 写法如下String host = "127.0.0.1";// 要连接的服务端IP地址int port = 8899; // 要连接的服务端对应的监听端口// 与服务端建立连接Socket client = new Socket(host, port);//建立连接后就可以往服务端写数据了Writer writer = new OutputStreamWriter(client.getOutputStream());writer.write("Hello Server.");writer.flush();// 写完后要记得flushwriter.close(); client.close();
      上传完整文件把。分开服务端和客户端
      在做java的socket编程的时候碰到了问题,就是实现简单的客户端和服务器端相互发送文件的例子,具体如下

      如何利用Socket进行网络编程

      TCP/IP网络通讯开发,一般采用Socket开发。它分服务器和客户端。服务器端流程: 1、创建服务器套接字---分配内存、初始化2、服务器套接字--侦听3、建立与客户端配套的客户端套接字4、与客户端通讯(可以多客户端)5、关闭、销毁服务器端相应套接字----------------客户端:1、创建客户端套接字---分配内存、初始化2、连接服务器3、与服务器通讯 4、关闭、销毁客户端套接字
      如何利用Socket进行网络编程

      Linux Socket编程求助啊,一个服务器和多个客户端通信问题求助

      如果客户端并发连接数不是很大,比如50个以下,可以用如下模型:建立一个监听主线程,循环监听端口。当有客户端连接时,建立客户端通讯线程,并保留客户端socket到链表中。当客户端断开连接时,从socket链表中删除该socket。
      Linux Socket编程求助啊,一个服务器和多个客户端通信问题求助

      C语言socket编程要怎么实现服务器可以发消息给客户端?

      先要理解socket是什么? 简单的说socket是一个全双工的通信通道,即使用TCP或者UDP通信时均可以在发送消息的同时接受消息,它不区分是否是服务器。根据这个概念你的问题就很好回答。》当客户端与服务器连接后。有什么方法使服务器可以随时随地发消息给客户端?》我现在只能。客户端发个消息给服务器。服务器才能发个消息给客户端。也就是说客户端不发消息。服务器就没法发消息给客户端。》求大牛给个思路。当连接后。客户端与服务器双方可以随时随地通信!使用多线程,一个维持接受逻辑,一个维持送信逻辑,即可完成同时接受及发送。客户端及服务器端均做上述设置。而你的做法是在一个线程中执行接受与送信,因此只能按照顺序逻辑完成接收与送信。 关键点是多线程。
      绑定两个端口,一个专门发送,一个专门接收
      C语言socket编程要怎么实现服务器可以发消息给客户端?

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/80124.html

          热门文章

          文章分类