0
已解决
王牌工作室官方
新手光能
新手光能
客户端:
/*
* testSocketClient.c
*
* Created on: 2012-8-16
* Author: 皓月繁星
*/
#include <WINSOCK2.H>
#include <stdio.h>
//定义程序中使用的常量
#define SERVER_ADDRESS "192.168.43.12" //**端IP地址
#define PORT 5150 //**的端口号
#define MSGSIZE 1024 //收发缓冲区的大小
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaData;
//连接所用套节字
SOCKET sClient;
//保存远程**的地址信息
SOCKADDR_IN server;
//收发缓冲区
char szMessage[MSGSIZE];
//成功接收字节的个数
int ret;
// Initialize Windows socket library
WSAStartup(0x0202, &wsaData);
// 创建客户端套节字
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //AF_INET指明使用TCP/IP协议族;
//SOCK_STREAM, IPPROTO_TCP具体指明使用TCP协议
// 指明远程**的地址信息(端口号、IP地址等)
memset(&server, 0, sizeof(SOCKADDR_IN)); //先将保存地址的server置为全0
server.sin_family = PF_INET; //声明地址格式是TCP/IP地址格式
server.sin_port = htons(PORT); //指明连接**的端口号,htons()用于 converts values between the host and network byte order
server.sin_addr.s_addr = inet_addr(SERVER_ADDRESS); //指明连接**的IP地址
//结构SOCKADDR_IN的sin_addr字段用于保存IP地址,sin_addr字段也是一个结构体,sin_addr.s_addr用于最终保存IP地址
//inet_addr()用于将 形如的"127.0.0.1"字符串转换为IP地址格式
//连到刚才指明的**上
connect(sClient, (struct sockaddr *) &server, sizeof(SOCKADDR_IN)); //连接后可以用sClient来使用这个连接
//server保存了远程**的地址信息
while (TRUE) {
printf("Send:");
//从键盘输入
gets(szMessage); //The gets() functionreads characters from stdin and loads them into szMessage
if(strcmp(szMessage,"**exit**")==0) break;
// 发送数据
send(sClient, szMessage, strlen(szMessage), 0); //sClient指明用哪个连接发送; szMessage指明待发送数据的保存地址 ;strlen(szMessage)指明数据长度
}
// 释放连接和进行结束工作
closesocket(sClient);
WSACleanup();
return 0;
}
**:
/*
* testSocketService.c
*
* Created on: 2012-8-16
* Author: 皓月繁星
*/
#include <WINSOCK2.H>
#include <stdio.h>
#define PORT 5150
#define MSGSIZE 1024
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaData;
SOCKET sListen;
SOCKET sClient;
SOCKADDR_IN local;
SOCKADDR_IN client;
char szMessage[MSGSIZE];
int ret;
int iaddrSize = sizeof(SOCKADDR_IN);
WSAStartup(0x0202, &wsaData);
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
local.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sListen, (struct sockaddr *) &local, sizeof(SOCKADDR_IN));
listen(sListen, 1);
sClient = accept(sListen, (struct sockaddr *) &client, &iaddrSize);
printf("Accepted client:%s:%d\n", inet_ntoa(client.sin_addr),
ntohs(client.sin_port));
while (TRUE) {
ret = recv(sClient, szMessage, MSGSIZE, 0);
szMessage[ret] = '\0';
printf("Received [%d bytes]: '%s'\n", ret, szMessage);
}
return 0;
}
使用过程中是先开启**,再开启客户端,否则可以自己试一试。
是客户端发送给服务端
王牌工作室官方在2022-01-14 20:09:45追加了内容
* *=
王牌工作室官方在2022-01-14 20:12:30追加了内容
客户端第11行是我的电脑IP,请自行更改。如果运气好,赶上我编程的时候,也许可以给我发话
本机IP用system("ipconfig");查到
王牌工作室官方在2022-01-14 20:15:21追加了内容
王牌工作室官方在2022-01-15 16:17:51追加了内容
有问题可以在这里回答也可以在这里评论
0
已采纳