Some basic socket functions

本文介绍了Winsock编程的基础函数,包括WSAStartup()和WSACleanup()的初始化与清理过程;bind()函数中如何指定端口及获取已分配的端口信息;connect()函数在流式与数据报模式下的应用,以及其对于默认目的地址的设定;最后探讨了WSARecvFrom()函数的同步与异步工作模式。

1.      WSAStartup(), WSACleanup()

int PASCAL WSAStartup(WORD,LPWSADATA);

int PASCAL WSACleanup(void);

You should only need to call these functions once each, the former when you initialize Winsock, and the latter when you are finished.

An application must call one WSACleanup call for every successful WSAStartup call to allow third-party DLLs to make use of a WS2_32.DLL on behalf of an application.

 

2.      bind()

For TCP/IP, if the port is specified as zero, the service provider assigns a unique port to the application with a value between 1024 and 5000.

The application can use getsockname() after calling bind to learn the address and the port that has been assigned to it.

If the Internet address is equal to INADDR_ANY, we dont call getsockname.

Binding to a specific port number other than port 0 is discouraged for client applications, since there is a danger of conflicting with another socket already using that port number.

 

3.      connect()

It can be used in both mode stream and data gram. Faint.

For a connectionless socket (for example, type SOCK_DGRAM), the operation performed by connect is merely to establish a default destination address that can be used on subsequent send/WSASend and recv/WSARecv calls. Any datagrams received from an address other than the destination address specified will be discarded.

 

4.      WSARecvFrom()

if LPWSAOVERLAPPED lpOverlapped is NULL, then the function act as a blocking mode asynchronous function; while if WSAOVERLAPPED is set, the function return immediately, if no error happen, and with an return value of ERROR_IO_PENDING, then we may wait for the event set in overlapped.

#pragma once #include "CoreMinimal.h" #include "Engine/Blueprint.h" #include "PaperZDAnimBP.generated.h" class UPaperZDAnimationSource; /** * Class responsible of driving animation for 2d characters. * Compiles into PaperZDAnimInstance, which is the runtime compiled class that works in-game. */ UCLASS(Blueprintable) class PAPERZD_API UPaperZDAnimBP : public UBlueprint { GENERATED_UCLASS_BODY() #if WITH_EDITORONLY_DATA public: /* The animation graph. */ UPROPERTY() TObjectPtr<class UEdGraph> AnimationGraph = nullptr; /* Animation source that we're implementing. */ UPROPERTY(AssetRegistrySearchable, VisibleDefaultsOnly, Category = "PaperZD") TObjectPtr<UPaperZDAnimationSource> SupportedAnimationSource = nullptr; private: /* Names of the registered notifies. */ UPROPERTY() TArray<FName> RegisteredNotifyNames_DEPRECATED; #endif public: virtual void PostLoad() override; virtual void Serialize(FArchive& Ar) override; #if WITH_EDITOR virtual void PostInitProperties() override; /* Returns the class to use for this blueprint. */ virtual UClass* GetBlueprintClass() const override; /* Returns the Animation Source that this blueprint is supporting. */ UPaperZDAnimationSource* GetSupportedAnimationSource() const { return SupportedAnimationSource; } /* Returns the animation source member name. */ static FName GetAnimationSourceMemberName() { return GET_MEMBER_NAME_CHECKED(UPaperZDAnimBP, SupportedAnimationSource); } #endif public: #if WITH_EDITOR //Create the basic sound graph void CreateGraph(); // Get the EdGraph of Animation class UEdGraph* GetGraph(); /* Called just before compiling this AnimBP, gives the chance to order some functions for the compiler. */ void OnPreCompile(); /* Called just after compiling this AnimBP, gives the chance to order some functions for the compiler. */ void OnPostCompile(); /* Checks if the version of this AnimBP is compatible with the compiler. */ bool IsVersionCompatibleForCompilation() const; /* Notifies that a custom notify has just been renamed. */ void OnRenameCustomNotify(FName OldName, FName NewName); private: //Template to use when naming a new AnimSequence static const FString SequenceNameTemplate; //Friendship for access to version updating friend class FPaperZDRuntimeEditorProxy; #endif };
最新发布
11-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值