//连接 static int sc_connect(pool *p1,resource *rs) { int ret=-1; T_NetHead Head; struct utsname ubuf; char buf[200],*p,addr[20]; log_stu logs; rs->Conn.timeout=-1; ret=Net_Connect(&rs->Conn,&rs->cli,*p1->log.family?p1->family:NULL); if(ret) { rs->cli.Errno=errno; stptok(strerror(errno),rs->cli.ErrMsg,sizeof(rs->cli.ErrMsg),0); return -1; } //login uname(&ubuf); p=buf; Head.O_NODE=LocalAddr(rs->Conn.Socket,addr); p+=sprintf(p,"%s|%s|%s,%s|||",p1->log.DEVID,p1->log.LABEL, ubuf.nodename,addr); rs->Conn.MTU=p1->log.MTU; Head.PROTO_NUM=0; Head.D_NODE=p1->log.NEXT_d_node; Head.ERRNO1=rs->Conn.MTU; Head.ERRNO2=Head.PKG_REC_NUM=0; Head.data=buf; Head.PKG_LEN=strlen(Head.data); ret=SendPack(&rs->Conn,&Head); ret=RecvPack(&rs->Conn,&Head); if(ret) { rs->cli.Errno=errno; stptok(strerror(errno),rs->cli.ErrMsg,sizeof(rs->cli.ErrMsg),0); disconnect(&rs->Conn); ShowLog(1,"%s:network error %d,%s",__FUNCTION__,rs->cli.Errno,rs->cli.ErrMsg); rs->cli.Errno=-1; return -2; } if(Head.ERRNO1 || Head.ERRNO2) { ShowLog(1,"%s:login error ERRNO1=%d,ERRNO2=%d,%s",__FUNCTION__, Head.ERRNO1,Head.ERRNO2,Head.data); disconnect(&rs->Conn); stptok(Head.data,rs->cli.ErrMsg,sizeof(rs->cli.ErrMsg),0); rs->cli.Errno=-1; return -3; } net_dispack(&logs,Head.data,log_tpl); strcpy(rs->cli.DBOWN,logs.DBOWN); strcpy(rs->cli.UID,logs.DBUSER); //取服务名 ret=init_svc_no(&rs->Conn); rs->cli.Errno=ret; *rs->cli.ErrMsg=0; return ret; }
void Broadcast_Setup( const char *dest ){ address_t address; char sMsg[1024]; Net_Setup(); Net_StringToAddress( dest, &address ); brdcst_socket = Net_Connect( &address, 0 ); if ( brdcst_socket ) { // send in a header sprintf( sMsg, "<?xml version=\"1.0\"?><q3map_feedback version=\"" Q3MAP_STREAM_VERSION "\">" ); NMSG_Clear( &msg ); NMSG_WriteString( &msg, sMsg ); Net_Send( brdcst_socket, &msg ); } }
JNIEXPORT jint JNICALL Java_com_sun_electric_tool_simulation_test_NetscanJNI_net_1connect (JNIEnv *env, jclass cls, jstring jstr) { unsigned int hsock; const char *str; //variable preparation phase str = (*env)->GetStringUTFChars(env, jstr, 0); //excution phase hsock = Net_Connect( str); //release phase (*env)->ReleaseStringUTFChars(env, jstr, str); return hsock; }
Bool IRC_Connect(void) { char UserString[2048], NickString[2048], MessageBuf[2048]; struct ChannelTree *Worker = Channels; Bool ServerLikesUs = false; int Code = 0; printf("Connecting to \"%s:%hu\"... ", ServerInfo.Hostname, ServerInfo.PortNum), fflush(stdout); if (!Net_Connect(ServerInfo.Hostname, ServerInfo.PortNum, &SocketDescriptor)) goto Error; snprintf(UserString, sizeof UserString, "USER %s 8 * :%s\r\n", ServerInfo.Ident, ServerInfo.RealName); snprintf(NickString, sizeof NickString, "NICK %s\r\n", ServerInfo.Nick); Net_Write(SocketDescriptor, UserString); Net_Write(SocketDescriptor, NickString); /*Check if the server likes us.*/ while (!ServerLikesUs) { if (!Net_Read(SocketDescriptor, MessageBuf, sizeof MessageBuf, true)) goto Error; IRC_GetStatusCode(MessageBuf, &Code); if (Code == 0) continue; switch (Code) { case IRC_CODE_OK: ServerLikesUs = true; break; case IRC_CODE_NICKTAKEN: fprintf(stderr, "Nickname taken. Shutting down.\n"); close(SocketDescriptor); exit(1); break; default: break; } } puts("Connected."); if (ServerInfo.SetBotmode) { char OutBuf[2048]; printf("Setting +B on ourselves..."); snprintf(OutBuf, sizeof OutBuf, "MODE %s +B\r\n", ServerInfo.Nick); Net_Write(SocketDescriptor, OutBuf); puts(" Done."); } if (ServerInfo.NickservPwd[0] != '\0') { char NickservString[2048]; printf("Authenticating with NickServ..."); snprintf(NickservString, 2048, "identify %s", ServerInfo.NickservPwd); IRC_Message("NickServ", NickservString); puts(" Done."); } if (Channels) { printf("Joining channels..."), fflush(stdout); for (; Worker != NULL; Worker = Worker->Next) { IRC_JoinChannel(Worker->Channel); printf(" %s", Worker->Channel), fflush(stdout); } putc('\n', stdout); } puts("\nEverything's up, ready to go.\n----"), fflush(NULL); return true; Error: fprintf(stderr, "Failed\n"); return false; }