社区
通信技术
帖子详情
谁能帮我写一个最简单的网络通信程序?
wolfkain
2004-11-17 11:13:26
只要基于windows API 的用MFC写的就不要了,还有把winsock.dll和winsock.h一起发给我:
Email:murder_sv@163.com
...全文
105
4
打赏
收藏
谁能帮我写一个最简单的网络通信程序?
只要基于windows API 的用MFC写的就不要了,还有把winsock.dll和winsock.h一起发给我: Email:murder_sv@163.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wolfkain
2004-11-17
打赏
举报
回复
呵呵,解决了!!不过也谢谢回复的大哥啊!!!!
wolfkain
2004-11-17
打赏
举报
回复
Compiling...
sssss.cpp
Linking...
sssss.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
sssss.obj : error LNK2001: unresolved external symbol __imp__recvfrom@24
sssss.obj : error LNK2001: unresolved external symbol __imp__sendto@24
sssss.obj : error LNK2001: unresolved external symbol __imp__socket@12
sssss.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
sssss.obj : error LNK2001: unresolved external symbol __imp__htons@4
sssss.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
出现这种错误是什么原因!!!!
#include <winsock2.h>
#include <stdio.h>
BOOL InitWinsock();
void main()
{
SOCKET socket1;
InitWinsock();
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(2000); ///server的监听端口
server.sin_addr.s_addr=inet_addr("218.199.168.38"); ///server的地址
socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
char buffer[1024]="\0";
printf("input message\n");
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
{
if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,&len)!=SOCKET_ERROR)
printf("rece from server:%s\n",buffer);
}
}
closesocket(socket1);
}
BOOL InitWinsock()
{
int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested=MAKEWORD(2,2);
Error=WSAStartup(VersionRequested,&WsaData); //启动WinSock2
if(Error!=0)
{
return FALSE;
}
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return FALSE;
}
}
return TRUE;
}
sssss.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
netsys2
2004-11-17
打赏
举报
回复
// Unit3.cpp 通讯线程代码
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
#pragma package(smart_init)
__fastcall Ttransmit::Ttransmit(bool CreateSuspended)
: TThread(CreateSuspended)
{
this->Suspend();
this->FreeOnTerminate=true;
}
//---------------------------------------------------------------------------
void __fastcall Ttransmit::Init(SOCKET *socket,HANDLE hwnd,AnsiString CADD)
{
msock=*socket;
m_hwnd=hwnd;
ClientAddr=CADD;
this->Resume();
}
void __fastcall Ttransmit::Execute()
{
SendMessage(m_hwnd,WM_SOCKET,ACCEPTOK,long(ClientAddr.c_str()));
int cc=0;
while(!this->Terminated)
{
memset(xbbbuf,0x00,4096);
cc=recv(msock,xbbbuf,4096,0);
if(cc==SOCKET_ERROR || cc<=0)
{
//接收数据失败
memset(m_ErrMsg,0x00,50);
strcpy(m_ErrMsg,"断开连接");
SendMessage(m_hwnd,WM_SOCKET,RECVERR,(long)m_ErrMsg);
closesocket(msock);
this->Terminate();
}
//xbbbuf中是接收到的数据
//处理代码。。。。
//发送数据用以下代码
/*
long datalen;//数据长度
if(send(msock,xbbbuf,datalen,0)==SOCKET_ERROR)
{
memset(m_ErrMsg,0x00,50);
strcpy(m_ErrMsg,"发送通讯指令失败");
SendMessage(m_hwnd,WM_SOCKET,SENDERR,(long)m_ErrMsg);
closesocket(msock);
this->Terminate();
}
else
{
//发送成功
} */
}
}
//---------------------------------------------------------------------------
//Unit3.h
//---------------------------------------------------------------------------
#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <winsock.h>
#define WSVERS MAKEWORD(1,0)
#define WM_SOCKET WM_USER + 1000
#define INITOK 1
#define INITERR 2
#define CREATEOK 3
#define CREATEERR 4
#define BINDOK 5
#define BINDERR 6
#define LISTENOK 7
#define LISTENERR 8
#define ACCEPTOK 9
#define ACCEPTERR 10
#define REMOTEQUEAST 11
#define SENDERR 12
#define RECVERR 13
#define WORKPOS 14
#define ACCEPTFINISH 15
#define THREADEND 16
#define FILESTART 17
//---------------------------------------------------------------------------
class Ttransmit : public TThread
{
private:
HANDLE m_hwnd;
AnsiString ClientAddr;
char xbbbuf[4096];
char m_ErrMsg[50]; //出错消息说明字符串指针
protected:
void __fastcall Execute();
public:
__fastcall Ttransmit(bool CreateSuspended);
void __fastcall Init(SOCKET *socket,HANDLE hwnd,AnsiString CADD);
SOCKET msock;
};
//---------------------------------------------------------------------------
#endif
netsys2
2004-11-17
打赏
举报
回复
主 题: 最近见问ServerSocket的哥们挺多的。我觉得ServerSocket不好。我一般用socket api写Server端。下面是一段示例代码。希望对正在写这方面的兄弟有用。
作 者: pp616 (傻小子)
等 级:
信 誉 值: 100
所属论坛: C++ Builder 网络编程/分布式开发
问题点数: 20
回复次数: 12
发表时间: 2003-03-31 13:51:33
//Unit1.cpp 窗体
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Tlisten *tlisten;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(tlisten==NULL)
{
tlisten =new Tlisten(false);
tlisten->Init(Handle,atol(edit->Text.c_str()));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(tlisten)
{
tlisten->Terminate();
tlisten=NULL;
}
}
//---------------------------------------------------------------------------
//你需要自己写一个消息map来响应WM_SOCKET消息
//消息里的参数意思在unit3.h中有定义
//Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *edit;
TButton *Button1;
TListBox *ListBox1;
TLabel *Label1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
回复人: pp616(傻小子) ( ) 信誉:100 2003-03-31 13:53:00 得分:0
//Unit2.cpp 监听线程代码
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit3.h"
#pragma package(smart_init)
Ttransmit *transmit;
__fastcall Tlisten::Tlisten(bool CreateSuspended)
: TThread(CreateSuspended)
{
this->Suspend();
this->FreeOnTerminate=true;
}
//---------------------------------------------------------------------------
void __fastcall Tlisten::Init(HANDLE hwnd,long lport)
{
m_hwnd=hwnd;
m_port=lport;
this->Resume();
}
void __fastcall Tlisten::Execute()
{
AnsiString Cadd;
struct sockaddr_in fsin,sin;
SOCKET ssock;
struct hostent *hostname;
int alen;
WSADATA wsadata;
if(WSAStartup(WSVERS,&wsadata)!=0)
{
//启动WinSock失败
SendMessage(m_hwnd,WM_SOCKET,INITERR,0);
return;
}
//启动WinSock成功
SendMessage(m_hwnd,WM_SOCKET,INITOK,0);
memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=inet_addr("");
sin.sin_port=htons(m_port);
msock=socket(PF_INET,SOCK_STREAM,0);
if(msock==INVALID_SOCKET)
{
//创建Socket失败
SendMessage(m_hwnd,WM_SOCKET,CREATEERR,0);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,CREATEOK,0);
if(bind(msock,(struct sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
{
//帮定Socket失败
SendMessage(m_hwnd,WM_SOCKET,BINDERR,0);
closesocket(msock);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,BINDOK,0);
if(listen(msock,5)==SOCKET_ERROR)
{
//监听失败
SendMessage(m_hwnd,WM_SOCKET,LISTENERR,0);
closesocket(msock);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,LISTENOK,0);
while(!this->Terminated)
{
alen=sizeof(struct sockaddr);
ssock=accept(msock, (struct sockaddr *)&fsin, &alen);
if(ssock==INVALID_SOCKET)
{
//接受请求失败
SendMessage(m_hwnd,WM_SOCKET,ACCEPTERR,0);
closesocket(msock);
WSACleanup();
this->Terminate();
return;
}
//接受请求成功。启动新线程接管
Cadd=AnsiString(inet_ntoa(fsin.sin_addr));
transmit=new Ttransmit(false); //启动新的线程接管accept到的socket
transmit->Init(&ssock,m_hwnd,Cadd);
}
}
//---------------------------------------------------------------------------
//Unit2.h
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <winsock.h>
#define WSVERS MAKEWORD(1,0)
//---------------------------------------------------------------------------
class Tlisten : public TThread
{
private:
HANDLE m_hwnd;
long m_port;
protected:
void __fastcall Execute();
public:
__fastcall Tlisten(bool CreateSuspended);
void __fastcall Init(HANDLE hwnd,long lport);
SOCKET msock;
};
//---------------------------------------------------------------------------
#endif
Socket编程例子
Socket源自Unix系统,是
网络通信
的
一个
抽象接口,它为应用
程序
提供了低级的、面向连接的、双向通信机制。Socket分为两种类型:流式Socket(Stream Sockets,TCP)和数据报Socket(Datagram Sockets,UDP)。TCP ...
第一章、C#最
简单
的控制台
网络通信
&C#最
简单
的控制台socket通信&两个控制台聊天
网络通信
是很多码农入职的第一课,也是毕业设计、课程设计上使用的重灾区,可以说不会
网络通信
的码农不是
一个
好码农。 通过这篇文章,你将学习如何使用C#Socket库来进行通信。ok,我们先从最
简单
的控制台开始。 一...
简单
的TCP
程序
:服务器与客户端的
简单
通信
基础TCP
程序
:服务器与客户端的
简单
通信 编译环境:IDEA 2021 JDK: JDK11 编
写
TCP
程序
时,一般都会编
写
两个Demo,
一个
是服务器端,
一个
是客户端。二者想要通信需要用到Socket:套接字。套接字的作用类似于手机,两个...
VC6.0控制台
程序
下实现最
简单
的TCP
网络通信
//本工程还需链接
一个
库文件 //解决方案一:
程序
代码中加入#pragma comment(lib, "Ws2_32.lib") //解决方案二:在project\setting\link 中object/library modules加入 ws2_32.lib //客服端 #pragma comment(lib, "Ws...
C# 两个exe
程序
之间通信
其实对于两个
程序
之间进行通信的实现方式有很多种,一般会采用服务端+客户端的模式,此处我们是进行两个客户端之间的通信,如果用一种最
简单
的方式去实现的话,我认为可以采用
写
文件的方式,即
一个
读,
一个
写
。...
通信技术
4,390
社区成员
28,906
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章